XPCShellのテストはGecko XPCOM APIのヘッドレステストです。あなたはB2G上でXPCShellのテストを実行することができます; この記事の中でどのように実行するか書かれています。現在、これらは主にエミュレータ上でテストされており、しかしデバイス上でもうまく実行される理屈です。
注意: この記事の$B2G_HOME
はクローンしたB2Gリポジトリを指します。
必須要件
- テスト対象をテストするためにB2Gをビルドする必要があります (参照: Firefox OS のビルドとインストール)
- いくつかのPythonパッケージ、virtualenvかそれ以外をインストールする必要があります:
pip install marionette_client
- requirements.txtファイルもまた利便性のために取り込むべきです:
wget people.mozilla.com/~ahalberstadt/runxpcshell-requirements.txt pip install -r runxpcshell-requirements.txt
adb
をパスの通った場所に置くか--adbpath
で指定 (Linux上では$B2G_HOME/out/host/linux-x86/bin/adb
で見つかるでしょう) されているか確認します- Busyboxのローカルコピーを持っていること (これは厳密には必要ではないがセットアップ時の要求を軽減する)
テストを実行する
以下のターミナルコマンドの中から一つを使ってxpcshellテストを実行することができます:
emulatorを使う場合:
cd $B2G_HOME/objdir-gecko make package-tests cd dist/test-package-stage/xpcshell python runtestsb2g.py --b2gpath $B2G_HOME --adbpath $ADB_PATH --emulator arm --use-device-libs --manifest <path_to_xpcshell_manifest> --testing-modules-dir <path_to_testing_modules_dir> --busybox <path_to_busybox_binary>
実機を使う場合:
cd $B2G_HOME/objdir-gecko make package-tests cd dist/test-package-stage/xpcshell python runtestsb2g.py --b2gpath $B2G_HOME --adbpath $ADB_PATH --use-device-libs --manifest <path_to_xpcshell_manifest> --testing-modules-dir <path_to_testing_modules_dir>
通常のデスクトップ用のxpcshellテストのように--total-chunks
and --this-chunks
オプションを加えることもできます:
python runtestsb2g.py --help
サポートする引数をすべてリストします。
runtestsb2g.py
を起動したあと、テストランナーがエミュレータを起動する (エミュレータ上でテストを実行する場合) かデバイスを再起動する (デバイス上でテストを実行する場合) でしょう、そしてテストを実行開始します。なぜならばエミュレータは遅く、テストプロファイルをプッシュし、B2Gを再起動する必要があり、テストは開始に数分かかります。
テスト終了時、エミュレータはシャットダウンします。実機の場合再起動します。
busyboxの手動インストール
デバイス上でxpcshellテストを実行するときは--busybox
はいりません。そのようなテスト実行のセットアップはとても時間がかかります。幸いにもテストを実行する前に手動でインストールできます。手動インストールの例はhttps://github.com/mozilla/Negatus/blob/master/setup-tools.shをご覧ください。
エミュレータをダウンロードしてxpcshellテストの実行
もし違うコンフィグ (otoroのような) でB2Gをビルドしてエミュレータ上でテストを実行したいなら、あなた自身がエミュレータをビルドすることなくテストを実行することができます。 runreftestb2g.py
と--b2gpath /path/to/unpacked/emulator
の代わりに--b2gpath $B2G_HOME
引数を置き換えた上記と同じ命令を使って、最新のtrunkのarmエミュレータをダウンロードします。