Mar*_*tin 10 instrumentation android unit-testing
是否有应用程序的运行时检查,以确定它是否作为检测测试的一部分运行?
背景:我们的应用程序在启动时执行数据库同步.但这应该只在定期开始时才会发生.它尤其会干扰测试db sync的检测测试.不出所料.
而对于所有其他测试,它只是浪费CPU周期.
如果您使用的是 Robolectric,您可以执行以下操作:
public boolean isUnitTest() {
String device = Build.DEVICE;
String product = Build.PRODUCT;
if (device == null) {
device = "";
}
if (product == null) {
product = "";
}
return device.equals("robolectric") && product.equals("robolectric");
}
Run Code Online (Sandbox Code Playgroud)
一个更简单的解决方案是检查仅存在于测试类路径中的类,该类可与JUnit 4配合使用(与使用ActivityUnitTestCase的解决方案不同),并且不需要将自定义意图发送到您的“活动/服务”(甚至可能不会)在某些情况下可能)
private boolean isTesting() {
try {
Class.forName("com.company.SomeTestClass");
return true;
} catch (ClassNotFoundException e) {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 ActivityUnitTestCase,您可以使用 setApplication 设置自定义应用程序对象,并在其中设置一个标志来打开或关闭数据库同步?我的博客上有一个使用自定义应用程序对象的示例:
http://www.paulbutcher.com/2011/03/mock-objects-on-android-with-borachio-part-3/
| 归档时间: |
|
| 查看次数: |
4871 次 |
| 最近记录: |