Automatische Generierung von Unit-Testfällen für .NET und Java [geschlossen]

9

Gibt es ein gutes Werkzeug, um Unit-Testfälle zu generieren, zB ein .NET- oder Java-Projekt, erzeugt es Unit-Testfälle, die eine fast 100% ige Codeabdeckung abdecken. Die Anzahl der Testfälle könnte direkt proportional zur zyklomatischen Komplexität des Codes sein (je höher die Verschachtelung der Schleifen und Bedingungen, desto höher die zyklomatische Komplexität), je höher die zyklomatische Komplexität ist, desto größer ist der Satz von Testfällen. Ich erwarte nicht, dass es voll funktionsfähig ist (sagen wir, ich werde die Komponententests erstellen und es nach der Generierung ausführen), aber ich würde sagen, dass es im Testfall einen Template-Stil haben kann, an dem Sie Änderungen vornehmen der Fall, der Ihren beabsichtigten Bedürfnissen entspricht. Aber es sollte auch eine richtige Setup- und Teardown-Methode haben und gut genug sein, um zu erkennen, ob Mock-Objekte für Komponententests verwendet werden sollten, sollte es irgendwelche Abhängigkeiten geben. Also, gibt es ein solches Werkzeug, das existiert?

    
yoitsfrancis 27.03.2009, 09:42
quelle

5 Antworten

15

Für .NET hat Microsoft Pex , das hoffentlich für .NET 4.0, Mainstream Mainstream werden wird mit Code-Verträgen . Ich empfehle dringend, das Channel 9-Video anzuschauen.

Es fällt mir auf, dass so etwas sehr gut für sehr datengesteuerte Klassen - Parser usw. ist. Ich kann nicht sehen, dass ich sehr oft damit anfangen würde, aber ein nützliches Werkzeug, um dennoch in Ihrer Waffenkammer zu haben.

    
Jon Skeet 27.03.2009, 09:46
quelle
5

Für C # (oder .NET im Allgemeinen) könnte PEX das Tool sein. Es arbeitet auf der IL-Ebene und versucht, in jeden Zweig einzudringen. Es hat eine Vielzahl von Fehlern (in der BCL usw.) erfolgreich aufgedeckt.

    
Marc Gravell 27.03.2009 09:46
quelle
5

Obwohl es entgegen der Intuition zu sein scheint, könnten Sie sich auch für Random-Test-Generierungs-Frameworks interessieren. Die Forschung hat bewiesen, dass sie genauso effektiv Fehler finden kann wie systematische Ansätze auf der Grundlage von Abdeckung, wie Sie vorschlagen.

Sehen Sie sich Randoop für .NET und Java an. Es funktioniert, indem es eine mehr oder weniger zufällige Folge von Methodenaufrufen erzeugt und Verträge, Abstürze usw. überprüft. Es ist vollautomatisch.

Sie können auch einige andere Testwerkzeuge ausprobieren, die auf QuickCheck basieren, z. für Java, Scala, F #. das ist ähnlicher zu Pex, d. h., Sie geben eine Spezifikation oder einen parametrisierten Komponententest, und das Tool prüft es für eine Anzahl von generierten Eingabeargumenten.

Ich habe festgestellt, dass diese "parametrisierte" Methode zum Schreiben von Komponententests in mindestens 60% der Fälle viel natürlicher ist und viel mehr Fehler findet.

    
Kurt Schelfthout 27.03.2009 09:58
quelle
0

Für Java können Sie EvoSuite überprüfen, das Open Source ist und derzeit aktiv ist (Disclaimer, ich bin einer seiner Mitwirkenden). Siehe auch die Frage für eine Liste weiterer Tools .

    
arcuri82 03.03.2016 20:45
quelle
0

Versuchen Sie für Java JUnit-Tools . Es hat ein eigenes Eclipse-Plugin und eine gute Dokumentation.

    
saurabheights 31.05.2016 17:48
quelle