Unterschied zwischen JUnit-Theorien und parametrisierten Tests
Was ist der Unterschied zwischen einer Theorie und einer Parametrisierten test?
Ich bin nicht daran interessiert, bei der Umsetzung Unterschiede bei der Erstellung der test-Klassen, nur wenn Sie wählen einen über den anderen.
InformationsquelleAutor der Frage dogbane | 2011-04-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aus, was ich verstehe:
Mit Parametrisierten tests Sie können eine Reihe von statischen Eingänge zu einem Testfall.
Theorien sind ähnlich, aber unterschiedlich in Konzept. Die Idee dahinter ist das erstellen von Testfällen, test auf Annahmen anstatt statische Werte.
Also, wenn meine gelieferten Testdaten ist wahr, nach einigen Annahmen, die daraus resultierende Behauptung ist immer deterministisch.
Eine der treibenden Ideen hinter diesem ist, dass Sie in der Lage sein, eine unbegrenzte Anzahl von test-Daten und test-Fall würden immer noch wahr sein; auch, oft müssen Sie testen, ein Universum von Möglichkeiten, die im test eingegebenen Daten, wie negative zahlen. Wenn Sie testen, statisch, ist, dass die Lieferung ein paar negative zahlen, es ist nicht garantiert, dass Ihre Komponente wird gegen alle negativen zahlen, auch wenn es ist sehr wahrscheinlich, dies zu tun.
Was ich sagen kann, xUnit-frameworks versuchen, Theorien-Konzepte von der Erstellung aller möglichen Kombinationen von Ihnen bereitgestellten Testdaten.
Beide sollten verwendet werden, wenn Sie auf ein Szenario in einer data-driven-Szenario (ich.e nur Eingänge zu ändern, aber der test ist immer das gleiche Behauptungen über und über).
Aber, da Theorien scheinen experimentell, ich würde diese nur verwenden, wenn ich brauchte, um zu testen, eine Reihe von Kombinationen in mein input-Daten. Für alle anderen Fälle würde ich der Verwendung von Parametrisierten tests.
InformationsquelleAutor der Antwort Fabio Kenji
Parameterized.class tests "einstellen" - tests mit einer einzigen Variablen, während Theories.class "einstellen" mit allen Kombinationen von mehreren Variablen.
Für Beispiele bitte Lesen:
http://blogs.oracle.com/jacobc/entry/parameterized_unit_tests_with_junit
http://blog.schauderhaft.de/2010/02/07/junit-theories/
http://blogs.oracle.com/jacobc/entry/junit_theories
Theories.class ist ähnlich wie Haskell QuickCheck:
http://en.wikibooks.org/wiki/Haskell/Testing
aber QuickCheck generiert automatisch parameter-Kombinationen
InformationsquelleAutor der Antwort gliptak
Aus meinem Verständnis der Unterschied ist, dass ein Parametrisierter Test wird verwendet, wenn alles, was Sie tun möchten, testen Sie einen anderen Satz von Eingängen (test einzeln), eine Theorie ist ein Spezialfall der Parametrisierten Test, in dem Sie testen jede Eingabe als ganzes (jeder parameter muss true sein).
InformationsquelleAutor der Antwort Ricardo Gomes
Etwas zu spät an, zu Antworten. Aber es wäre hilfreich für die Zukunft Tester.
Parametrisierten Tests in vs-Theorien
InformationsquelleAutor der Antwort VHS
Zusätzlich zu den oben genannten Antworten:
Auf einem Eingang mit 4-Werte und 2-test-Methoden
@RunWith(Theories.class) - generiert 2 JUnit-tests
@RunWith(Parameterized.class) - generieren 8 (4 Eingänge x 2 Methoden) JUnit-tests
InformationsquelleAutor der Antwort andreyro