Wenn größere Codeänderungen auftreten (neue POJOs, größere Umgestaltungen von Anwendungen usw.), werden Komponententests eher auskommentiert als überarbeitet.
Ich versuche immer, Refactoring und Funktionsänderung getrennt zu halten. Wenn ich beides tun muss, führe ich normalerweise zuerst das Refactoring durch.
Beim Refactoring von Code ohne Änderung der Funktionalität sollen vorhandene Komponententests sicherstellen, dass das Refactoring die Funktionalität nicht versehentlich beeinträchtigt. Daher würde ich bei einem solchen Commit das Deaktivieren oder Entfernen von Komponententests als wichtiges Warnzeichen betrachten. Entwickler, die dies tun, sollten angewiesen werden, dies nicht zu tun, wenn der Code überprüft wird.
Änderungen, die die Funktionalität nicht ändern, können dazu führen, dass Komponententests aufgrund fehlerhafter Komponententests fehlschlagen. Wenn Sie den Code verstehen, den Sie ändern, ist die Ursache für solche Unit-Test-Fehler normalerweise sofort offensichtlich und leicht zu beheben.
Wenn eine Funktion beispielsweise drei Argumente enthält, hat ein Komponententest, der die Interaktion zwischen den ersten beiden Argumenten für die Funktion abdeckt, möglicherweise nicht dafür gesorgt, dass für das dritte Argument ein gültiger Wert angegeben wurde. Dieser Fehler im Komponententest kann durch ein Refactoring des getesteten Codes aufgedeckt werden, ist jedoch leicht zu beheben, wenn Sie verstehen, was der Code tun soll und was der Komponententest testet.
Wenn Sie vorhandene Funktionen ändern, müssen Sie in der Regel auch einige Komponententests ändern. In diesem Fall stellen Unit-Tests sicher, dass Ihr Code die Funktionalität wie beabsichtigt ändert und keine unbeabsichtigten Nebenwirkungen hat.
Wenn Sie Fehler beheben oder neue Funktionen hinzufügen, müssen Sie in der Regel weitere Komponententests hinzufügen. Für diese kann es hilfreich sein, zuerst Komponententests durchzuführen und die Fehlerbehebung oder neue Funktionen später durchzuführen. Dies erleichtert die Überprüfung, dass die neuen Komponententests nicht mit dem älteren Code, sondern mit dem neueren Code bestanden wurden. Dieser Ansatz ist jedoch nicht ganz ohne Nachteile. Daher gibt es auch Argumente dafür, sowohl neue Komponententests als auch Code-Updates gleichzeitig durchzuführen.
Die Zeit wird besser für Integrationstests verwendet, die Anwendungsfälle abdecken, wodurch die Tests mit kleinerem Umfang weniger oder gar nicht wichtig sind.
Darin liegt ein Element der Wahrheit. Wenn Sie die unteren Schichten des Software-Stacks mit Tests abdecken können, die auf die höheren Schichten des Software-Stacks abzielen, sind Ihre Tests möglicherweise beim Refactoring von Code hilfreicher.
Ich glaube nicht, dass Sie eine Einigung über die genaue Unterscheidung zwischen einem Unit-Test und einem Integrationstest finden werden. Und ich würde mir keine Sorgen machen, wenn Sie einen Testfall haben, den ein Entwickler einen Komponententest und ein anderer einen Integrationstest nennt, vorausgesetzt, sie stimmen darin überein, dass es sich um einen nützlichen Testfall handelt.