我已经实现了一个 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。
这听起来像参数化 JUnit 测试用例。
查看这里的简短教程- 请注意,您将需要使用 JUnit4,我不确定 Android 的测试框架是否已为此做好准备。
也就是说,JUnit4 向后兼容 JUnit3,因此理论上可以在 android 测试用例运行器下使用 JUnit4 注释,并带有一些构建路径错误。