wie übergeben ein argument für ein android junit test (Parametrisierte tests)

Ich bin mit meinem android junit tests über die Kommandozeile oder eclipse je, wenn ich bin im dev-Modus oder im Gerät testen.

Einer java-Applikation hat eine Main (String[] args) - Methode, und es ist leicht, zu gehen ein argument, um es (entweder mit eclipse in der Argumente-Registerkarte in der run configuration Abschnitt, oder per Kommandozeile)

für ein android junit test es ist anders, es gibt keine Main-Methode, und es gibt nirgendwo ich kann einige Argumente.

Ich habe hier und da gelesen, eine Lösung wäre die Verwendung einer properties-Datei. Ist das die einzige Möglichkeit?
Wenn Sie ave ein schnelles und einfaches Beispiel, wäre es sehr geschätzt.

Dank

>>> Edit <<<

Ich bin mit Robotium, und die junit erweitert ActivityInstrumentationTestCase2
Sehen Sie unten die sehr einfache junit-test:

import android.test.ActivityInstrumentationTestCase2;
import android.util.Log;

import com.jayway.android.robotium.solo.Solo;

public class Test_arg extends ActivityInstrumentationTestCase2 {    
    private static final String TARGET_PACKAGE_ID                = "com.myapp.test";
    private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME = "com.myapp";
    private static Class        launcherActivityClass;
    private Solo solo;

    static {
        try {
            launcherActivityClass = Class.forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME);
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        }
    }

    public Test_arg() throws ClassNotFoundException {
        super(TARGET_PACKAGE_ID, launcherActivityClass);

    }

    @Override
    protected void setUp() throws Exception {
        solo = new Solo(getInstrumentation(), getActivity());
    }

    @Override
    public void tearDown() throws Exception {
        try {
            solo.finishOpenedActivities();
            solo.finalize();
        } catch (Throwable e) {
            e.printStackTrace();
        }
        super.tearDown();
    }

    public void test_01() throws InterruptedException { 
        Log.i("TEST", "test");   
    }    
}

und das android-manifest

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.myapp.test"
    android:versionCode="1"
    android:versionName="1.0" >
    <uses-sdk android:minSdkVersion="5" />

    <instrumentation        
        android:name="android.test.InstrumentationTestRunner"                      
        android:targetPackage="com.slacker.radio" android:functionalTest="true"/>

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <uses-library android:name="android.test.runner" />
    </application>
</manifest>
  • ähnliche Fragen: stackoverflow.com/questions/683764/... stackoverflow.com/questions/2884163/...
  • es ist nicht gut, practive Argumente übergeben, um die tests von der Kommandozeile aus. Was wollen Sie weitergeben? Warum nicht Sie erstellen unterschiedliche test-suites oder bauen Sie Argumente innerhalb tests.
  • Ray, wie wissen in meiner Frage, ich bin mir bewusst, das system Eigenschaften Weg, ich bin gerade auf der Suche ein gerader Weg (wie command-argument). _ Leonidos. Ich verstehen, es ist nicht die best-practice-Argumente übergeben, die für unit-tests. In meinem Fall, einige änderungen der server-Seite, wo Sie die Schalter on und off Dinge. Meine tests ausführen von Befehlszeile automatisch, also nicht mit zu kompilieren, wieder die tests, wenn die server Sachen ändern speichern würde meine Zeit
  • Wenn das Ziel ist die Unterstützung von parametrisierten Android-tests, in Betracht ziehen, Burst für diese.
InformationsquelleAutor Franck | 2013-02-11
Schreibe einen Kommentar