2017-08-24 6 views
0

Ich habe Android Instrumententests mit Espresso. Einige meiner Tests müssen auf einem Emulator ausgeführt werden - aufgrund der Verwendung der LinkedIn TestButler (https://github.com/linkedin/test-butler) -Bibliothek. Diese Bibliothek schaltet wifi/gsm für bestimmte Testläufe ein und deshalb müssen diese Tests auf einem Emulator ausgeführt werden.Sagen Sie Espresso, um spezifische Tests auf einem Emulator zu laufen

Meine Frage ist - kann ich bestimmte Tests kommentieren, um auf einem Emulator zu laufen, während die anderen Tests auf einem echten Gerät ausgeführt werden?

Dank

Antwort

0

Die einfachste Lösung fand ich ist JUnit verwenden Angenommen API:

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

Dieses: http://junit.org/junit4/javadoc/4.12/org/junit/Assume.html

Also, in den Testmethoden, die nur auf einem Emulator ausgeführt werden kann, habe ich diesen Code setzen Ergebnisse in dieser Prüfung nicht berücksichtigt zu werden, wenn es auf einem Emulator nicht ausgeführt wird, und ein handlichen Fehler msg im Laufe Fenster: enter image description here


Wie Sie sehen können, bestanden die anderen beiden Tests gut (im grünen Bereich) und die gesamte Testsuite konnte laufen.

2

Ja, können Sie eine @ConditionalIgnore Anmerkung verwenden, wie in http://www.codeaffine.com/2013/11/18/a-junit-rule-to-conditionally-ignore-tests/ beschrieben.

Sie werden so etwas wie

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"); 
    } 
} 

EDIT

Für diesen speziellen Fall haben, ein Gerät oder Emulator Erkennen Sie auch @RequiresDevice verwenden können.

+0

Was ist der Unterschied zwischen dieser Regel und der von Apache: issues.apache.org/jira/browse/GEODE-167 –

Verwandte Themen