Sto eseguendo i miei test di junit android utilizzando la riga di comando o eclipse a seconda se sono in modalità dev o in test del dispositivo.come passare un argomento a un test di junit android (test parametrizzati)
un'applicazione Java ha un metodo principale (String [] args) ed è facile passare un argomento ad esso (sia con eclisse nella scheda Argomenti nella sezione di configurazione di esecuzione, o dalla linea di comando)
per un test di junit android è diverso, non esiste un metodo Main e non c'è da nessuna parte che posso impostare alcuni argomenti.
Ho letto qua e là una soluzione sarebbe utilizzare un file di proprietà. E 'l'unica possibilità? Se hai un esempio facile e veloce, sarebbe molto apprezzato.
Grazie
>>> Edit <<<
Sto usando Robotium, e il JUnit estende ActivityInstrumentationTestCase2 Vedi sotto il test JUnit molto di base:
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");
}
}
e l'androide manifesta
<?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>
domande simili: http://stackoverflow.com/questions/683764/passing-junit-command-line-parameters-in-eclipse http://stackoverflow.com/ domande/2884163/pass-command-line-arguments-to-junit-test-case-being-run-programatically –
non è buono practive passare gli argomenti ai test dalla riga di comando. Cosa vuoi passare? Perché non creare diverse suite di test o creare argomenti all'interno dei test. – Leonidos
Ray, come menzionato nella mia domanda sono a conoscenza del modo in cui le proprietà del sistema, sto solo guardando un modo più diretto (come argomento del comando)._ Leonidos. Capisco che non è la migliore pratica per passare argomenti per test unitari. Nel mio caso, alcune modifiche sono fatte lato server, dove accendono e spengono le cose. I miei test vengono eseguiti automaticamente dalla riga di comando, quindi non dover compilare di nuovo i test quando il roba del server cambierebbe il mio tempo – Franck