Bei der Untersuchung der Best Practices für Unit-Tests zur Erstellung von Richtlinien für mein Unternehmen bin ich auf die Frage gestoßen, ob es besser oder nützlicher ist, Testgeräte (Testklassen) zu trennen oder alle Tests für eine einzelne Klasse in einer Datei zu speichern.
Fwiw, ich beziehe mich auf "Komponententests" in dem reinen Sinne, dass es sich um White-Box-Tests handelt, die auf eine einzelne Klasse abzielen, eine Aussage pro Test, alle Abhängigkeiten werden verspottet usw.
Ein Beispielszenario ist eine Klasse ("Dokument") mit zwei Methoden: CheckIn und CheckOut. Jede Methode implementiert verschiedene Regeln usw., die ihr Verhalten steuern. Nach der Regel "One-Assertion-per-Test" werden für jede Methode mehrere Tests durchgeführt. Ich kann entweder alle Tests in eine einzelne DocumentTests
Klasse mit Namen wie CheckInShouldThrowExceptionWhenUserIsUnauthorized
und einfügen CheckOutShouldThrowExceptionWhenUserIsUnauthorized
.
Oder ich könnte zwei separate Testklassen haben: CheckInShould
und CheckOutShould
. In diesem Fall würden meine Testnamen gekürzt, aber sie würden so organisiert, dass alle Tests für ein bestimmtes Verhalten (Methode) zusammen sind.
Ich bin mir sicher, dass es Vor- und Nachteile für beide Ansätze gibt, und frage mich, ob jemand mit mehreren Dateien den Weg gegangen ist, und wenn ja, warum? Oder, wenn Sie sich für den Single-File-Ansatz entschieden haben, warum ist er Ihrer Meinung nach besser?
testResponseContainsSuccessTrue()
, testResponseContainsMyData()
und testResponseStatusCodeIsOk()
. Sie würden sie in einem einzigen haben testResponse()
die drei behauptet hat: assertEquals(200, response.status)
, assertEquals({"data": "mydata"}, response.data)
undassertEquals(true, response.success)