Ich bin ein wachsender Programmierer, der Unit-Tests für eine Bibliothek, die ich auf GitHub speichere, endlich in die Praxis umsetzt.
Mir ist der Gedanke gekommen, dass ich die Testsuiten in das Repo aufnehmen könnte, aber wenn ich mich in anderen Projekten umsehe, scheint die Aufnahme von Tests ein Glücksfall zu sein.
Wird das als schlechte Form angesehen? Ist die Idee, dass Benutzer sich nur für den Arbeitscode interessieren und ihn trotzdem in ihrem eigenen Framework testen?
version-control
unit-testing
Parisminton
quelle
quelle
Antworten:
Sie sollten Ihre Tests definitiv in das Repository stellen. Tests sind meiner Meinung nach Teil des Codes und können anderen helfen, ihn zu verstehen (wenn sie gut geschrieben sind). Außerdem können sie anderen helfen, wenn sie Ihre Codebasis ändern oder dazu beitragen. Gute Tests können Ihnen die Gewissheit geben, dass Ihre Änderungen nichts versehentlich beschädigen.
Der Testcode sollte jedoch gut vom Produktionscode getrennt sein. Maven erreicht dies zum Beispiel, indem Produktions- und Testcode in verschiedene Ordner abgelegt werden. Die Frage "Ist diese Datei Teil der Produktion oder des Testcodes?" Sollte niemals auftauchen.
Ich persönlich schreibe keine Komponententests für gebrauchte Bibliotheken in meinem eigenen Code. Ich erwarte, dass sie funktionieren (zumindest wenn ich eine Release-Version verwende, obwohl offensichtlich Fehler auftreten können). Bei Integrationstests wird eine gewisse Testabdeckung erzielt, die jedoch nicht ausreicht.
quelle
Wenn Sie die Komponententests nicht in den eingecheckten Quellcode aufnehmen, dann:
Unterm Strich würde ich prüfen , nicht in dem offiziellen Quellcode-Repository eine sehr schlechte Sache einschließlich Unit - Tests geschrieben.
quelle
Natürlich sollten Sie Unit-Tests aus mehreren Gründen in das Repository stellen:
quelle
Wenn die Möglichkeit besteht, sie auf einem anderen Computer auszuführen, schließen Sie sie auf jeden Fall ein. Sie sollten separat erstellt werden, damit Benutzer dies nicht müssen, und sie können zusätzliche Abhängigkeiten aufweisen, sie sollten jedoch definitiv einbezogen werden.
Ich würde stark vermuten, dass die meisten Projekte, die keine Tests in das Repository aufnehmen, einfach keine haben.
Es kann einen Grund geben, die Tests als separates Modul zu haben, damit Sie neue Tests problemlos mit älterem Code ausführen können. Dies ist nützlich für API-stabile Bibliotheks- oder Black-Box-Tests über die Befehlszeile. Der Nutzen für kompilierte Sprachen, bei denen die neuen Tests wahrscheinlich nicht mit älterem Code kompiliert werden, ist begrenzt.
quelle
Absolut. Die zusätzlichen Bonuspunkte liegen in der Fähigkeit, die Version X einer Quelldatei mit der Version Y eines Tests zu verfolgen. Mit anderen Worten, Sie müssen in der Lage sein, zu einer früheren Version zurückzukehren und die entsprechenden Tests für diese Version durchzuführen (im Falle einer API-Änderung oder dergleichen).
quelle
Ich habe gerade die Lektüre "Brownfield Application Development in .Net" abgeschlossen. Hier erhalten Sie ausgezeichnete Hinweise zur Struktur einer Anwendung, einschließlich Versionskontrolle und wo / wie / warum Unit-Tests (insbesondere im Bereich Continuous Integration) vorgesehen sind. . Wenn Sie ein .NET-Entwickler sind, würde ich es empfehlen.
quelle