Google+ もご覧ください
ユーザーアイコン

実務で使えるTitaniumテクニック

GruntとTiShadowでTitaniumアプリのテストを自動化しよう

Ryugoo

GruntとTiShadowでTitaniumアプリのテストを自動化しよう

前回までに Titanium Studio に頼らない開発環境とテスト環境の構築を行いました。この記事の最後としてテストを自動化する方法を紹介します。 TDD / BDD のようにテストファーストでコードを書くとき、プロダクトコードのリファクタリングを行う段階があります。プロダクトコードをプログラマーの責任範囲内でパスするように修正を加える際、修正を加えるたびにテストを手動で行うのは効率的ではありません。コードを修正し、保存するたびにテストがパスするのかを確認したいところです。

最近は Grunt という Node.js ベースのタスクランナーが有名です。

Grunt
Grunt

Grunt とプラグインを組み合わせることでコードの変更を監視し、 TiShadow を経由したテストを自動で実行することができます。

Grunt をインストールする

Grunt は Titanium CLI や TiShadow 同様に npm でインストールできます。

$ npm -g install grunt-cli
$ grunt --version
grunt-cli v0.1.9

grunt-cli をインストールすると grunt コマンドが実行できるようになります。

必要なプラグインを設置する

Titanium プロジェクト毎に必要な Grunt プラグインを設置していきます。 Grunt のプラグインも npm からインストールすることができます。これまでと異なるのは、 Titanium プロジェクトディレクトリ内にインストールするということです。例えばTitaniumプロジェクトを~/titanium/SpecTestにしている場合は次のようになります。

$ cd ~/titanium/SpecTest
$ npm init

npm init はプロジェクト毎に npm からインストールしたいパッケージ情報を記述するための package.json を生成してくれるコマンドです。質問に答えていくだけで package.json のひな形ができあがります。

name: (SpecTest)
そのまま Enter を押すと現在のディレクトリ名が設定されるので、今回はそのまま Enter を押します。
version: (0.0.0)
バージョン情報です。これもこのまま Enter を押します。
description
プロジェクトの概要を入力してください。
entry point: (index.js)
プロジェクトの基点となる JavaScript ファイル名を指定します。 Titanium プロジェクトなので Resources/app.js です。
test command
テストを実施するためのコマンドです。 tishadow spec を入力してください。
git repository
プロジェクトを Git で管理している場合はリモートリポジトリの URL を入力してください。
keywords
今回は必要ないのでこのまま Enter を押します。
author
開発者名などを入れてください。入れなくても構いません。
license: (BSD-2-Clause)
プロジェクトのライセンスを入力してください。デフォルトでは二条項 BSD ライセンスが設定されています。

ここまで入力を行うと、出力しようとしている package.json の中身が表示されます。この Is this ok? (yes) と聞いてきますので、そのまま Enter を押すか、 yes と入力して Enter を押すと Titanium プロジェクトのディレクトリの package.json が保存されます。保存しない場合は no を入力してください。

できあがった package.json の中身を見ると、

{
  "name": "SpecTest",
  "version": "0.0.0",
  "description": "Welcome to your Appcelerator Titanium Mobile Project",
  "main": "Resources/app.js",
  "scripts": {
    "test": "tishadow spec"
  },
  "author": "",
  "license": "BSD-2-Clause"
}

のようになっています。この package.json をテキストエディタで開いて、以下のように修正してください。

{
  "name": "SpecTest",
  "version": "0.0.0",
  "description": "Welcome to your Appcelerator Titanium Mobile Project",
  "main": "Resources/app.js",
  "scripts": {
    "test": "tishadow spec"
  },
  "author": "",
  "license": "BSD-2-Clause",
  "devDependencies": {
    "grunt": "*",
    "grunt-contrib-watch": "*",
    "grunt-tishadow": "*"
  }
}

devDependencies に Grunt 本体と監視用プラグイン、 TiShadow 用プラグインを設定しました。修正後、

$ cd ~/titanium/SpecTest
$ npm install

を実行します。これまでと異なり npm install-g オプションを付けていない点に注意してください。 devDependencies に設定した grunt grunt-contrib-watch grunt-tishadow のインストールが始まります。インストールが終了すると Titanium プロジェクトディレクトリに node_modules ディレクトリができています。

$ tree -L 2
.
├── LICENSE
├── README
├── Resources
│   ├── KS_nav_ui.png
│   ├── KS_nav_views.png
│   ├── android
│   ├── app.js
│   ├── blackberry
│   ├── iphone
│   ├── mobileweb
│   └── tizen
├── build
│   └── tishadow
├── manifest
├── node_modules
│   ├── grunt
│   ├── grunt-contrib-watch
│   └── grunt-tishadow
├── package.json
├── spec
│   └── app_spec.js
└── tiapp.xml

ここまでで準備は完了です。次のページでは実際にタスクファイルを作成し、テストを実行してみましょう。

Titanium

記事をリクエストする

関連記事

コメント