Esiste un modo per dire a JUnit di eseguire un test case specifico più volte con dati diversi continuamente prima di passare al caso di test successivo?Esecuzione dello stesso caso di test JUnit più volte con dati diversi
risposta
un'occhiata a junit 4.4 theories:
import org.junit.Test;
import org.junit.experimental.theories.*;
import org.junit.runner.RunWith;
@RunWith(Theories.class)
public class PrimeTest {
@Theory
public void isPrime(int candidate) {
// called with candidate=1, candidate=2, etc etc
}
public static @DataPoints int[] candidates = {1, 2, 3, 4, 5};
}
Ho alcuni casi di test che seguono il formato come testxyz(), testpqr(). La mia attuale classe di test estende TestCase. – Giridhar
Non sono in esecuzione se sto seguendo questo formato. – Giridhar
prima devi convertirli in JUnit 4 (semplicemente usando l'annotazione @Test, nella maggior parte dei casi) – dfa
Eseguo sempre un metodo di supporto che esegue il test in base ai parametri, quindi chiama tale metodo dal metodo di test JUnit. Normalmente ciò significherebbe che un singolo metodo di test di JUnit potrebbe eseguire molti test, ma non era un problema per me. Se si desideravano più metodi di test, uno per ogni invocazione distinta, si consiglia di generare la classe di test.
Sembra che sia un candidato perfetto per i test parametrizzati.
Ma, in pratica, i test parametrizzati consentono di eseguire lo stesso set di test su dati diversi.
Ecco alcuni buoni post del blog su di esso:
Ecco un post che ho scritto che mostra vari modi per eseguire i test più volte con esempi di codice:
È possibile utilizzare il corridore @Parametrized, o utilizzare il corridore speciale incluso nel post
recentemente ho avviato il progetto zohhak. esso consente di scrivere:
@TestWith({
"25 USD, 7",
"38 GBP, 2",
"null, 0"
})
public void testMethod(Money money, int anotherParameter) {
...
}
Se non si vuole o non può utilizzare corridore personalizzato (es. si sta già utilizzando un altro corridore, come Robolectric corridore), si può provare questo DataSet Rule.
Un modo molto migliore (vi permette di avere più di un metodo di prova) è quello di utilizzare JUnit con JUnitParams:
import junitparams.Parameters;
import org.junit.Test;
@RunWith(JUnitParamsRunner.class)
Public class TestClass() {
@Test
@Parameters(method = "generateTestData")
public void test1(int value, String text, MyObject myObject) {
... Test Code ...
}
.... Other @Test methods ....
Object[] generateTestData() {
MyObject objectA1 = new MyObject();
MyObject objectA2 = new MyObject();
MyObject objectA3 = new MyObject();
return $(
$(400, "First test text.", objectA1),
$(402, "Second test text.", objectA2),
$(403, "Third test text.", objectA3)
);
}
}
È possibile ottenere le junitparams proiettano here.
Se si sta già utilizzando un @RunWith
nella classe di test, è probabilmente necessario dare un'occhiata a this.
2018-01-19 downvote. Si prega di avere la cortesia di spiegare il tuo pensiero. Potresti imparare qualcosa. –
- 1. Left-join dello stesso tavolo più volte
- 2. Rendering di un baffo parziali più volte con dati diversi
- 3. Confronta percorsi di esecuzione dello stesso codice sotto diversi ingressi
- 4. Classe di test Junit con più metodi @Test
- 5. Test di Eclipse junit nello stesso progetto
- 6. Esecuzione di test JUnit da più progetti in Eclipse
- 7. Test unitario: come affermare più chiamate dello stesso metodo?
- 8. esecuzione dello stesso pacchetto SSIS con parametri diversi in tempi diversi
- 9. JUnit + Maven + Test parallelo Errore di esecuzione
- 10. Test basati sui dati con jUnit
- 11. Esecuzione di un incrocio di test con JUnit e Maven
- 12. due diversi metodi sincronizzati dello stesso oggetto?
- 13. C'è un modo per far eseguire a Eclipse un test JUnit più volte fino al fallimento?
- 14. Esecuzione di due stessi test con argomenti diversi
- 15. C#, Servizi Windows: ServiceBase.Run con diversi servizi dello stesso tipo
- 16. factorygirl: creare lo stesso oggetto più volte
- 17. Test unità VS2010 - ripetere lo stesso test con diversi parametri
- 18. Esecuzione di un testcase PHPUnit più volte
- 19. Più set di oggetti dello stesso tipo
- 20. hashing stesso carattere più volte
- 21. XMPP più sessioni dello stesso problema utente
- 22. esecuzione Android test setup() viene chiamato più volte
- 23. Ansible, ruolo di esecuzione più volte con set di parametri diversi
- 24. Android JobScheduler esecuzione più volte
- 25. Test di più host con lo stesso test utilizzando serverspec
- 26. Test unità Visual Studio C# - Esegui test unità con inizializzazioni test multiple/multiple, Esegui stesso test unità più volte?
- 27. Emacs: più viste dello stesso file
- 28. Esecuzione della suite di test JUnit utilizzando Maven
- 29. Gestione dei dati di test per i test Junit
- 30. Più istanze dello stesso componente di reazione
Usando le teorie (come indicato da @dfa), Junit tratterà tutti i test come un test e renderà più difficile capire quale test ha fallito. Considerando che i Test parametrizzati (come sottolineato da @ jjnguy) li considerano tutti come test diversi, indicando chiaramente quale test è fallito. – mindreader