Android 告诉Espresso在模拟器上运行特定测试
我用浓缩咖啡做了安卓仪器测试。由于使用LinkedIn的TestButler()库,我的一些测试必须在模拟器上运行。该库为特定的测试运行切换wifi/gsm,这就是为什么这些测试必须在模拟器上运行的原因 我的问题是-我可以在模拟器上运行任何特定的测试,同时让其他测试在真实设备上运行吗Android 告诉Espresso在模拟器上运行特定测试,android,junit,android-espresso,android-instrumentation,Android,Junit,Android Espresso,Android Instrumentation,我用浓缩咖啡做了安卓仪器测试。由于使用LinkedIn的TestButler()库,我的一些测试必须在模拟器上运行。该库为特定的测试运行切换wifi/gsm,这就是为什么这些测试必须在模拟器上运行的原因 我的问题是-我可以在模拟器上运行任何特定的测试,同时让其他测试在真实设备上运行吗 谢谢是的,您可以使用@ConditionalIgnore注释,如中所述 你会有类似 public class SomeTest { @Rule public ConditionalIgnoreRule ru
谢谢是的,您可以使用
@ConditionalIgnore
注释,如中所述
你会有类似
public class SomeTest {
@Rule
public ConditionalIgnoreRule rule = new ConditionalIgnoreRule();
@Test
@ConditionalIgnore( condition = NotRunningOnEmulator.class )
public void testSomething() {
// ...
}
}
public class NotRunningOnEmulator implements IgnoreCondition {
public boolean isSatisfied() {
return !Build.PRODUCT.startsWith("sdk_google");
}
}
编辑
对于检测设备或仿真器的这种特定情况,您也可以使用
@RequiresDevice
我发现的最简单的解决方案是使用JUnit Aspect API:
因此,在只能在模拟器上运行的测试方法中,我使用以下代码:
Assume.assumeTrue("This test must be run in an emulator!", Build.PRODUCT.startsWith("sdk_google"));
这会导致上述测试在未在模拟器上运行时被忽略,并且在“运行”窗口中出现一个方便的错误消息:
如您所见,其他两个测试都通过了(绿色),整个测试套件都能够运行。此规则与Apache中的规则有什么区别:issues.Apache.org/jira/browse/GEODE-167