テストコード記述ガイド(hifive本体開発者向け)
- 概要
- 使用ツール
- 単体テストのファイルテンプレート
- テストファイルの配置
- 単体テスト(QUnit)ケース記述時のルール
- QUnitのテストケースフィルタについて
- CI環境
概要
hifive本体のテストコードの記述に関するルール・ガイドを説明する。
使用ツール
- QUnit
- 単体テスト
- Selenium2(予定)
- 画面系のテスト時に使用予定
単体テストのファイルテンプレート
* Copyright (C) 2012 NS Solutions Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
(function() {
// =========================================================================
//
// Constants
//
// =========================================================================
// =========================================================================
//
// Privates
//
// =========================================================================
//=============================
// Variables
//=============================
// TODO テスト対象モジュールのコード定義をここで受けて、各ケースでは ERR.ERR_CODE_XXX と簡便に書けるようにする
var ERR = ERRCODE.h5.core.data;
//=============================
// Functions
//=============================
// =========================================================================
//
// Test Module
//
// =========================================================================
//=============================
// Definition
//=============================
// TODO module()関数による、テストモジュールとsetup/teardownの記述
//=============================
// Body
//=============================
// TODO テストケース本体
})();
テストファイルの配置
testフォルダ以下に、以下のように配置
test/(テスト対象モジュール)/(テストモジュール名).js
※(テスト対象モジュール)は、「.」を「_」にしたフォルダ名にする
例:test/h5_core_data/moduleName.js
単体テスト(QUnit)ケース記述時のルール
テストモジュールは「APIの基本的なテスト」および「フィーチャー単位のテスト」ごとに別ファイルとする
1ファイルにつき1モジュールにする(module()は1ファイル中1回だけ)
テストモジュール名はキャメルケースにする
テストモジュールのファイル名は「(テストモジュール名).js」とする
例:h5.core.data.jsを対象に、基本的なAPIのテストと、バリデーションについてのテストを記述する場合
- バリデーションのテスト:h5.core.data_validation.js
module()のsetup, teardownを適切に使用する
- テストの前提条件の生成にはsetupを使用する。同じ初期化コードをコピペしない。
- setupで生成したものは、teardownで適切に破棄する。
- 初期生成にパラメータが必要(パラメータ化すればコピペせずに済むようになる)なら、(setupの代わりに)共通関数を作る。
エラーの発生をアサーションで記述する場合、エラーコード値でチェックする(messageは見ない)
- メッセージは変更される可能性がある(多言語化対応などで言語が変わる場合もあり得る)ので、メッセージ(文字列)によるアサーションは行わない。
アサーション記述時、エラー定数は必ず test/_h5errorcode.js で定義されている定数を使用する
定数はERRCODE名前空間の下に、モジュールごとにぶら下がっている。
例:
QUnitのテストケースフィルタについて
文法
テストケース名、またはモジュール名の先頭に [xxx] として書く。
「未知のブラウザに対しては全てのテストを行う」という観点から、
フィルタ条件にマッチした場合に限り、そのテストをスキップする。
各タグはORで結合される。したがって、 [build#min; browser#ie:6] というフィルタは
「min版、またはIE6の場合はテストをスキップする」という意味になる。
例:
利用可能なタグ
タグ | 取り得る値または文法 | 意味 | 例 |
---|---|---|---|
build | dev / min | ビルド種別 | |
browser | (browser) : (version)[:docmode=(docmode)]、複数のブラウザを指定する場合は「|」でつなぐ(OR指定) | バージョンは省略不可。ハイフンで範囲指定可能。ブラウザ名はキーで指定。docmodeはIEの場合のみ有効。 | ie:8-10:docmode=7|ch:0-24 |
browserのプレフィックスキー
ブラウザ | プレフィックスキー |
---|---|
IE | ie |
Firefox | ff |
Chrome | ch |
Safari | sa |
Opera | op |
スマートデバイスの場合は「(browser)-(OS種別)」の組で表現する。
ブラウザ(OS) | キー |
---|---|
MobileSafari(iOS) | sa-ios |
Android標準ブラウザ | and-and |
IE Mobile | ie-wp |
Chrome for Android | ch-and |
Chrome for iOS | ch-ios |
Firefox Mobile | ff-and |
Opera Mobile | op-and |
環境設定パラメータの記述方法
環境設定パラメータは、window.H5_TEST_ENVオブジェクト、またはクエリパラメータで指定できる。
両方に同じパラメータが記述されている場合はH5_TEST_ENVオブジェクトの値が優先される。
CI環境
- タイムアウト等テスト続行不能なエラー発生時は FAILED.(理由).(疑似Pkg記法) とする。
- 例:FAILED.TIMEOUT.xxxx