2013-06-05 25 views
89

Moje przypadki testu pakietów są rozproszone w wielu plikach, jeśli uruchomię go test <package_name>, uruchomi on wszystkie pakiety testowe w pakiecie.Jak uruchomić przypadki testowe w określonym pliku?

Nie ma jednak potrzeby uruchamiania ich wszystkich. Czy istnieje sposób na określenie pliku do uruchomienia dla go test, tak aby uruchamiał tylko przypadki testowe zdefiniowane w pliku?

Odpowiedz

130

Istnieją dwa sposoby. Łatwo jest użyć flagi -run i podać wzór pasujący do nazw testów, które chcesz uruchomić.

ex: $ go test -run NameOfTest. Zobacz docs, aby uzyskać więcej informacji.

Innym sposobem jest, aby wymienić konkretny plik, zawierający testy, które chcesz uruchomić:

$ go test foo_test.go 

Ale jest pewien haczyk. Działa to dobrze, jeśli

  • foo.go jest dany pakiet
  • foo_test.go JEST pakiet foo_test a import 'foo'.

Jeśli "foo_test.go" i "foo.go" to ten sam pakiet (typowy przypadek), to musisz wymienić wszystkie inne pliki wymagane do zbudowania "foo_test". W tym przykładzie będzie to:

$ go test foo_test.go foo.go 

Polecam użyć wzorca nazwy. Lub, jeśli to możliwe, zawsze uruchamiaj wszystkie testy pakietów.

+1

Czy mógłbyś rozwinąć pierwszy (łatwy) sposób z "-run", proszę? Nie mogę znaleźć żadnego ręcznego odnośnika na ten temat. –

+1

oh, Znalazłem go tutaj http://golang.org/cmd/go/#hdr-Test_packages –

+1

Możesz również znaleźć informacje na jego temat używając 'go help testflag' –

81

@ odpowiedź ZZZZ jest w większości kompletne, ale po prostu, by ratować innych od konieczności przekopywania się przez odwołanie documentation można uruchomić jeden test w pakiecie następująco:

go test packageName -run TestName 

Zauważ, że chcesz przekazać w nazwa testu, nazwa pliku, w którym test istnieje.

Flaga -run faktycznie akceptuje wyrażenie regularne, dzięki czemu można ograniczyć przebieg testu do klasy testów. Od docs:

-run regexp 
    Run only those tests and examples matching the regular 
    expression. 
+13

Warto zauważyć, że nazwa pakietu to kompletna nazwa pakietu, np." Github.com/you/stuff/a/b/c " – garbagecollector

+0

1.9.3 akceptuje względna ścieżka pakietu. – Amit

3

w IntelliJ IDEA go-lang wtyczki (i zakładam w JetBrains Gogland) można po prostu ustawić rodzaj testu, aby złożyć pod Uruchom> konfiguracjach edycyjnych

screenshot create go test on go file

+1

W Gogland można po prostu kliknąć plik testowy prawym przyciskiem myszy i wybrać "run foo_test.go", który zbuduje pakiet z testami, a następnie przekaże wyrażenie regularne zawierające nazwy wszystkich testów w tym pliku testowym do flagi -run. Naprawdę przydatna funkcja. – Eloff

Powiązane problemy