我已经实现了Instrumentation和AndroidTestCase。
对于我的测试,我需要连接到外部WIFI设备。我希望测试人员能够为要使用的测试指定SSID。
给命令行(adb shell am instrument ...)运行测试不是问题,但是如何将SSID添加到命令行并在代码中提取它?
答案 0 :(得分:9)
找到解决方案。
我让我的测试运行器继承自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。
答案 1 :(得分:7)
要展开selalerer&#39; answer,可以使用Gradle指定的参数启动检测测试:
./gradlew -Pandroid.testInstrumentationRunnerArguments.exampleArgument=hello connectedAndroidTest
您可以使用以下方法检索检测参数:
InstrumentationRegistry.getArguments().getString("exampleArgument") // returns "hello"
答案 2 :(得分:1)
这听起来像参数化JUnit测试用例。
查看简要教程here - 请注意,您需要使用JUnit4,我不确定Android的测试框架是否已准备就绪。
也就是说,JUnit4向后兼容JUnit3所以在理论上它可以在android测试用例运行器下使用JUnit4注释和一些构建路径tomfoolery。