2

Ich bin derzeit mit einer Reihe von Tests ausgeführt werden. Beim Debuggen und Schreiben dieser Tests leite ich sie auch von Android Studio aus, sodass ich die CMD-Leitungsfähigkeit verliere.erstellen und gradle oder Systemeigenschaft in Android verwenden Tests

Was ich tun möchte, ist eine Systemeigenschaft oder eine buildConfig-Variable, die ich nur in meinen Tests setzen kann, um wahr, und in der Lage sein, es in meinem Android-Code zu verwenden.

Ich kann nicht scheinen, eine grandle Task/Config zu finden, die dies für diese Art von Test einstellen wird. Die einzige Sache, die ich fand, war testOptions, aber das scheint nur für Komponententests zu sein.

Antwort

0

Die perfekte Lösung wäre, herauszufinden, wie Sie vermeiden können, im Code zu wissen, wenn Sie sich gerade in einem Test befinden. Sie haben nicht erklärt, warum Sie diese Informationen benötigen, also sehen Sie sich Comtaler's answer to a similar question an. Es könnte genau das sein, was du brauchst.

+0

Also, es ist, weil ich mit Fesselnde Modus bin zu kämpfen. Ich verwende UiAutomator und UiDevice in meinen Tests, aber bei Verwendung des Immersive-Modus kann UiDevice nicht die volle Bildschirmgröße erhalten. Ich habe Knöpfe, die ich klicken muss, die unter dem Navigationsmenü sind. Was ich in Tests machen möchte, ist den Immersive Modus zu deaktivieren, damit meine Tests korrekt laufen. –

+0

Auch bin ich mir nicht sicher, ob das hilft, denn wenn ich Immersive Tests mache, werden 2 APKs verwendet. Meine ursprüngliche App, und auch eine Test-APK, die dagegen läuft. Daher wird die App, die den Immersive-Modus festlegt, nicht über .test verfügen. in der Paketname –

+0

Aber eigentlich, dass ich darüber nachdenke, bin ich mir nicht sicher, ob es sowieso für meine App ist, sogar zu wissen, ob es gegen die Test-APK ausgeführt wird, also vielleicht ist das alles sowieso unmöglich ... –

0

einige Einstellungen nur dann zu ändern, für einen androidTest/Instrumantation/Espresso-Test, den ich mit der folgenden Lösung kam:

//DbHelper 
public class DbHelper extends SQLiteOpenHelper { 
    public static AtomicBoolean isTestMode = new AtomicBoolean(false); 

    private static String getDBName() { 
     if (isTestMode.get()){ 
     return null; // use in memory sqlite db 
     } else { 
     return DB_NAME; 
     } 
    } 

// within my unit test 
@Rule 
public ActivityTestRule<MyActivity> mActivityRule = new ActivityTestRule<MyActivity>(
     MyActivity.class){ 

    @Override 
    protected void beforeActivityLaunched() { 
     super.beforeActivityLaunched(); 
     DbHelper.isTestMode.set(true); 
    } 

    @Override 
    protected void afterActivityFinished() { 
     super.afterActivityFinished(); 
     DbHelper.isTestMode.set(false); 
    } 
}; 
Verwandte Themen