InstrumentationとAndroidTestCaseを実装しました。
私のテストでは、外部WIFIデバイスに接続する必要があります。テスターがテストで使用するSSIDを指定できるようにしたいと思います。
テストを実行するためのコマンドライン(adb shell am Instrument ...)を指定することは問題ではありませんが、SSIDをコマンドラインに追加してコードに抽出するにはどうすればよいですか?
InstrumentationとAndroidTestCaseを実装しました。
私のテストでは、外部WIFIデバイスに接続する必要があります。テスターがテストで使用するSSIDを指定できるようにしたいと思います。
テストを実行するためのコマンドライン(adb shell am Instrument ...)を指定することは問題ではありませんが、SSIDをコマンドラインに追加してコードに抽出するにはどうすればよいですか?
解決策を見つけました。
テストランナーを InstrumentationTestRunner から継承させ、追加のデータを onCreate() で取得しました。
public class MyTestRunner extends InstrumentationTestRunner {
public static String BAR;
public void onCreate(Bundle arguments) {
if (null != arguments) {
BAR = (String) arguments.get("foo"));
}
super.onCreate(arguments);
}
}
私は Android.mk に追加しました:
LOCAL_JAVA_LIBRARIES := android.test.runner
そして AndroidManifest.xml に:
<instrumentation
android:name="com.example.MyTestRunner"
android:targetPackage="com.example" />
次のコマンド ラインを使用して実行しました。
adb shell am instrument -w -e foo the_value_of_bar com.example/com.example.MyTestRunner
コマンドラインから「foo」パラメーターを取得し、AndroidTestCase で BAR を使用することができました。
これは、 ParameterizedJUnitTestのユースケースのように聞こえます。
ここで簡単なチュートリアルを確認してください。JUnit4を使用する必要があり、Androidのテストフレームワークがその準備ができているかどうかはわかりません。
とは言うものの、JUnit4はJUnit3と下位互換性があるため、理論的には、Androidテストケースランナーの下で、ビルドパスを少し使用してJUnit4アノテーションを使用することができます。