フレームワークの選択
選択肢は少なかった。 Googleはそのようなオプションがあることを私に知らせました:
私は、悔い改めて、SEオプションを見ることなく選択しました。 「まあ、SEのJUnitは、SEエミュレータと確実にシームレスに連携する必要があります。」 おそらくこれが最も不幸なオプションだった... 8)
設置
ダウンロードしたアーカイブには、ライブラリ、サンプルコード、サンプルantタスクが含まれていました。
タスクの1つを引用します。
< target name ="run-with-coverage" >
< java
classname ="com.sonyericsson.sdkme.junit.OnDeviceTest"
fork ="true" failonerror ="true" >
< classpath refid ="test-classpath" />
< arg value ="--javac:${javac}" />
< arg value ="--project-dir:${project-dir}" />
< arg value ="--device:SonyEricsson_K750_Emu" />
< arg value ="--compile:true" />
< arg value ="--compile-midlet:true" />
< arg value ="--coverage:L" />
< arg value ="--coverage-report:${project-dir}/coverage.html" />
< arg value ="--name:Mobile JUnit Sample Project" />
</ java >
< echo message ="A coverage HTML report has been written to ${project-dir}/coverage.html" />
</ target >
* This source code was highlighted with Source Code Highlighter .
異なるパラメーターを持つ特定のクラスが呼び出されていることがわかります。 ところで、どこにも文書化されていません。 コピー&ペーストでは結果が得られませんでした。 問題はbootclasspathにありました。 逆コンパイルされたコードを熟読すると、ライブラリは次の形式のパラメーターを使用していることがわかりました-<name>:<value>; <name>:<value> ... ちなみに、セミコロンと一緒にスペースを区切りとして認識します。 したがって、「プログラムファイル」はありません。 これはすべて、必要なライブラリを1つのディレクトリに解凍し、bootclasspathでそのパスを示すことで決定されました。
すべての修正の後、Java呼び出しは次のようになります。
< java classname ="com.sonyericsson.sdkme.junit.OnDeviceTest" fork ="true" failonerror ="true" >
< classpath >
< pathelement path ="${env.MJUNIT_HOME}/junit.jar" />
< pathelement path ="${env.MJUNIT_HOME}/mobile-ju-1.0.jar" />
< pathelement path ="${java.home}/lib" />
</ classpath >
< arg value ="--project-dir:${basedir}" />
< arg value ="--device:SonyEricsson_K750_Emu" />
< arg value ="--compile:false" />
< arg value ="--compile-midlet:false" />
< arg value ="--coverage:L" />
< arg value ="--runmode:${tests.runmode}" />
< arg value ="--coverage-report:${basedir}/coverage.html" />
< arg value ="--name:Stiter Client" />
< arg value =""--wtk:${env.WTK_HOME}"" />
< arg value ="--print-config:on" />
< arg value ="--midlet-under-test:${jarpath}" />
< arg value ="--bootclasspath:"${toString:tests.bcp}"" />
</ java >
* This source code was highlighted with Source Code Highlighter .
使用する
説明されたアクションの後、テストミッドレットが組み立てられ、開始されました。 しかし、テストはエラーで落ちました。 処理は、テストでミッドレットのコピーを作成する必要がないという事実に要約されました。 つまり、これは間違っています。
public void setUp() throws Throwable {
super.setUp();
midlet = new OurMIDlet();
}
* This source code was highlighted with Source Code Highlighter .
そして、このように:
public void setUp(MIDlet miDlet) throws Throwable {
super.setUp(miDlet);
testMidlet = miDlet;
OurApplication.setMidletInstance(testMidlet);
}
* This source code was highlighted with Source Code Highlighter .
同時に、testMidletはテストミッドレットのインスタンスであり、動作中のものではありません。
実際、それがすべてです。 誰かがこれが役立つことを願っています。
SEライブラリに代わるものを使用しますか? 何をお勧めしますか?