2013-05-08 5 views
5

Ich versuche, einen Batch-Instrumentierungstest (mit ActivityInstrumentationTestCase2) für eine bestimmte Activity zu schreiben, wo ich die Absicht jedes Mal ändern, wenn der Test ausgeführt wird. Ich kann das mit einem einzigen Test machen, und die Aktion mit der neuen Absicht anhalten und neu starten, aber das möchte ich nicht. Ein Grund ist, dass sie eigentlich getrennte Testläufe sein sollten. Der andere Grund ist, ich benutze Spoon, um einen Bericht zu erstellen, wenn die Tests abgeschlossen sind, und der Bericht wird zu Recht denken, dass ich nur einen Test ausgeführt habe.Parametrisierte Instrumentierung Tests unter Android

Was ich möchte ist es, einen einzelnen Test als eine möglicherweise unendliche Anzahl von Tests zu behandeln und die Daten jedes Mal in den Test zu geben, wenn der Test läuft.

Leider können Sie Theories nicht verwenden, da dies zu einer RuntimeException führt, bei der der InstrumentationTestRunner meine Tests nicht finden kann. Hat jemand Glück dabei?

Antwort

0

Sie könnten immer nur eine "Test" Absicht erstellen. Um das Relaunch der Anwendung zu simulieren, erstellen Sie eine Methode oder mehrere Methoden, die alle Ihre statischen Variablen zwischen den Tests zurücksetzen. Dann können Sie die Klassen testen innerhalb einer Test Absicht innerhalb der Anwendung selbst

assert("value", MyClass.myMethod); 
resetStatics(); 
assert(true, MyClass,myMethod); 
resetStatics(); 

mit ich weiß nicht, wie viel das wird Ihnen helfen, wenn überhaupt, aber das ist, wie ich begann meine eigenen Tests zu schreiben.

0

Ich habe vor kurzem entdeckt, dass Sie eine public static Test suite()-Methode zu einer Testklasse hinzufügen können, und wenn Sie nur diese einzelne Testklasse ausführen, wird InstrumentationTestRunner die Test von dieser Methode zurückgegeben ausführen. Dies ist hilfreich, da suite() explizit einen Konstruktor Ihrer TestCase aufrufen kann, einschließlich einer mit Parametern.

+0

Ich suchte nach der Weitergabe von Daten zu Testmethoden, nicht die Klasse –

+0

@ChristopherPerry Erstellen eines neuen Testobjekts für jeden Wert, den Sie testen möchten, ist das JUnit-Standardparadigma. –

+0

das stimmt nicht unbedingt. Siehe hier: https://blogs.oracle.com/jacobc/entry/junit_theories, es macht keinen Sinn, ein neues Testobjekt zu erstellen, wenn meine Testmethode genau gleich ist, nur mit anderen Daten. –

Verwandte Themen