2016-07-19 10 views
1

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

+1

Da alle Tests, die Sie angegeben haben, die keine waren, bestanden, oder mit anderen Worten, hatten Sie keine Testfehler. – JimB

+0

Dieses Verhalten macht keinen Sinn, ich würde erwarten, dass es so etwas wie "Test 'NotExist' not found" sagt. – mozey

+0

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

Antwort

1

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):

Command go, Test packages:

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.

Description of testing flags:

-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.

+0

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

+1

@ 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

Verwandte Themen