Frage

Ich stehe vor dem, was ich für ein häufiges Problem für ein häufiges Problem halte, aber ich habe nicht viel Diskussion oder vorhandene Tools gefunden, um es anzugehen. Ich versuche, ein Integrationstestsystem (bereits eine starke Reihe von Unit -Tests zu haben) einzurichten, das das Senden von QA -Senden von Eingabedaten und die erwarteten Ergebnisse (in Form von Flatendateien, idealerweise) unterstützt, die von einer standardisierten JUNIT -Klasse ausgeführt werden können.

Ich habe einen Plan, hier mit dem Junit meine eigenen zu rollen @Paramaterized Anmerkung. Ich stelle mir vor, dass jede Daten- und Ergebnissemenge eine Steuerdatei und alle Steuerdateien in einem Verzeichnis platziert werden. Die Parametergeneratormethode würde dieses Verzeichnis scannen und eine Liste dieser Dateien zurückgeben. Der Testkonstruktor würde dann diese Datei lesen und die Eingabedaten und die erwarteten Ergebnisse einrichten.

Bevor ich damit beginne, wollte ich sehen, ob es bereits Tools gab, um diese Art von Dingen zu erledigen, und wenn nicht, sollten Sie einige Meinungen zu der Lösung erhalten, die ich vorschlage.

Die Anwendung selbst ist ein reines ETL -Tool zum Back End ETL, das Daten aus mehreren Eingabedateien in verschiedenen Formaten aufnimmt und Ergebnisse in einer Datenbank erzeugt. Ich habe bereits einige statische Integrationstests, die ein Derby in der Speicherdatenbank verwenden, um die Ergebnisse auf triviale Eingabedaten zu überprüfen, und ich plane, ein ähnliches System zu verwenden, um die Daten hier zu bestätigen. Die erwarteten Ergebnisse würden in Form von von (key_value, column, expected value) Dreifach. Ich möchte JUNIT verwenden, um den Rest unserer Test- und Ergebnisberichterstattung in Verbindung zu bringen.

War es hilfreich?

Lösung

Sich ansehen Spock, ein groovybasiertes Testframework mit starker Unterstützung für datengesteuerte Tests. Spock ist zum Testen von Java (und Groovy) Code ausgelegt und ist mit Junit vollständig kompatibel (tatsächlich werden Spock -Tests mit Junit durchgeführt). Sehen hier Für einen einfachen Beispiel -Test, der Daten aus einer Datenbank zieht.

Im Allgemeinen klingt Ihr Plan für mich vernünftig und kann auch mit einfachem Jungit und @Parametrisierte realisiert werden. Spock und Groovy können Ihr Leben jedoch erleichtern. Beispielsweise ist das Arbeiten mit Textdateien und Datenbanken in Groovy viel einfacher als in Java.

Haftungsausschluss: Ich bin der Schöpfer von Spock.

Andere Tipps

Ich bevorzuge mich selbst. Aber ich sehe, dass es ein JUNITPARAMS -Framework gibt, das viel lesbarer ist als die parametrisierten JUNIT -Tests:

https://github.com/pragmatists/junitparams

Eine großartige Beschreibung finden Sie unter:

https://weblogs.java.net/blog/johnsmart/archive/2014/07/23/data-driven-unit-testing-java

Für andere, die diese Frage treffen ....

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top