Wenn ich die folgendenWarum wird 'go test -run NotExist' bestanden?
go test -run NotExist
Die Antwort ist PASS. Da meine Testdatei enthält keinen Test TestNotExist
Ich würde erwarten, dass der Befehl oben genannten FAIL
Wenn ich die folgendenWarum wird 'go test -run NotExist' bestanden?
go test -run NotExist
Die Antwort ist PASS. Da meine Testdatei enthält keinen Test TestNotExist
Ich würde erwarten, dass der Befehl oben genannten FAIL
Ohne die -run
Option go test
läuft alle Tests zurückzukehren. Sie verwenden die Option -run
zu nicht alle Tests ausführen; zu herauszufiltern, um ausschließen Tests (und Sie tun dies in Form von erfordern Namen von Nicht-ausschließbar Tests Spiel ein regexp Muster - aber das ist der Punkt der Diskussion irrelevant Form):
standardmäßig gehen Test keine Argumente benötigt. Es kompiliert und testet das Paket mit der Quelle im aktuellen Verzeichnis einschließlich der Tests und führt die Tests aus.
-run regexp Run only those tests and examples matching the regular expression.
Es ist ein ganz „normales“ Ergebnis, dass eine Filterung alle Tests herausfiltert, dass keine Tests in der Reihe von Tests bleiben, die noch ausgeführt werden müssen.
Wenn keine Tests fehlschlagen, gilt dies als Testlauf PASSes. Wenn keine Tests übereinstimmen, werden keine Tests ausgeführt und keine Tests werden fehlschlagen, und somit wird der Testlauf bestanden.
Wenn wir nochmal darüber nachdenken, macht das Verhalten Sinn. Ich habe gehört, dass es keine Fehler beweisen kann. Sie können nur auf ihre Anwesenheit testen. Wenn nichts explizit fehlschlägt, dann gehe davon aus, dass es funktioniert. Die Sache, die mich nervt, ist, dass wenn ich einen Tippfehler in dem Befehl mache, werde ich keine Warnung bekommen. – mozey
@ mozey Zustimmen. Aber ein einfacher "Go-Test" wird Fehler aufdecken, und das sollten Sie zum Testen/Validieren verwenden. Sie sollten nur die Option '-run' verwenden, wenn Sie einige Änderungen schnell testen möchten. – icza
Da alle Tests, die Sie angegeben haben, die keine waren, bestanden, oder mit anderen Worten, hatten Sie keine Testfehler. – JimB
Dieses Verhalten macht keinen Sinn, ich würde erwarten, dass es so etwas wie "Test 'NotExist' not found" sagt. – mozey
Es ist nur das Verhalten, auf das sich alle geeinigt haben. Es ist oft so, dass Sie Benchmarks ausführen, ohne Tests auszuführen, oder nach Testkompilierungsfehlern suchen. – JimB