2017-08-24 84 views
0

我使用Espresso進行Android儀器測試。由於使用了LinkedIn的TestButler(https://github.com/linkedin/test-butler)庫,我的一些測試必須在模擬器上運行。這個庫爲特定的測試運行切換wifi/gsm,這就是爲什麼這些測試必須在模擬器上運行。Tell Espresso在仿真器上運行特定測試

我的問題是 - 我可以註釋任何特定的測試運行在模擬器上,而其他測試運行在真實的設備上嗎?

感謝

回答

0

最簡單的解決方案,我發現是使用JUnit假定API:http://junit.org/junit4/javadoc/4.12/org/junit/Assume.html

所以,只能在模擬器上運行的測試方法裏面,我把這個代碼:

Assume.assumeTrue("This test must be run in an emulator!", Build.PRODUCT.startsWith("sdk_google")); 

enter image description here


:在上述測試結果時,它不是在模擬器上運行,在運行窗口方便的錯誤味精被忽略

正如你所看到的,其他兩個測試通過的很好(綠色),並且整個測試套件都能夠運行。

2

是的,你在http://www.codeaffine.com/2013/11/18/a-junit-rule-to-conditionally-ignore-tests/描述可以使用@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這種特殊情況下。

+0

這條規則和Apache的規則有什麼區別:issues.apache.org/jira/browse/GEODE-167 –

相關問題