Finden Sie heraus, welcher Unit-Test in Abhängigkeit von einem anderen fehlschlägt

Wir haben ~22.000 Einheitentests. Jetzt schlagen zwei davon fehl, wenn sie zusammen mit anderen Tests ausgeführt werden. Sie bestehen, wenn sie alleine laufen. Ich suche jetzt nach einer automatisierten Analyse, um die Tests einzugrenzen, um das Problem zu reproduzieren.

Ich denke, es sollte möglich sein, eine Lösung mit einem Teile-und-Herrsche-Ansatz zu finden. Führen Sie einige Komponententests durch, und führen Sie dann den betroffenen aus. Finden Sie heraus, ob es fehlschlägt oder besteht. Ein Neustart des Unit-Test-Prozesses sollte hoffentlich die Ursache beseitigen, vorausgesetzt, dass es sich nicht um eine Datei oder Datenbank handelt.

Dies sind die Anforderungen:

  • Unterstützt .NET/C#
  • Unterstützt MSTest- und NUnit-Tests
  • funktioniert unter Windows 7 und 10
  • ist kostenlos für die kommerzielle Nutzung
  • läuft offline, also auf einem Entwicklerrechner, nicht in der Cloud
„Teile und herrsche“ könnte funktionieren. Es darf nicht. Stellen Sie sich vor, Test T1 schlägt fehl, wenn T77 und T952 der Reihe nach in einem Satz von T2-T1000 ausgeführt werden. Ein Teile-und-Herrsche-Schema kann T77 in eine Gruppe T2–T500 unterteilen und T952 in eine Gruppe T501–T999 platzieren … und keine der Untergruppen wird, wenn sie für sich allein ausgeführt wird, den Fehler zeigen. Theoretisch müssen Sie möglicherweise eine beliebige Teilmenge identifizieren. Bei N Tests sind das 2^N mögliche Teilmengen; Bei 1000 Tests sind das 2 ^ 1000, was viel mehr ist als die Anzahl der Protonen im sichtbaren Universum.
.... Jetzt können Sie immer noch ein Teile-ein-Herrschen-Schema ausprobieren und hoffen, dass Sie keine schwierigen Abhängigkeiten haben, da Ihre Tests unabhängig sein sollen.
@IraBaxter: Ich brauche nicht alle Protonen gleichzeitig. Ich kann Elektronen im Laufe der Zeit wiederverwenden.

Antworten (1)

Mein Team und ich verwenden den Isolator von Typemock. Es unterstützt .Net Framework, MSTest, Nunit und Windows. Sie können es auch auf einem Entwicklercomputer ausführen. Wir verwenden die kostenpflichtige Version, von der ich glaube, dass sie Ihnen helfen könnte. Es gibt eine kostenlose Version, obwohl ich nicht sicher bin, ob sie Ihre Anforderungen erfüllen kann.