2013-04-23 42 views
26

Trong gói Go của tôi, có một số tệp chuẩn như map1_benchmark_test.gomap2_benchmark_test.go. Trong mỗi tệp *_benchmark_test.go, có nhiều hàm chuẩn như func BenchmarkMapTravel(b *testing.B)func BenchmarkMapGet(b *testing.B).Làm cách nào để chỉ kiểm tra một hàm chuẩn?

Câu hỏi là, làm cách nào tôi có thể kiểm tra chỉ một hàm chuẩn?

Tôi đã cố gắng đọc một số sách hướng dẫn và không có gì về điểm chuẩn bằng cách chạy go help test.

Trả lời

45

Description of testing flags

-test.bench pattern 
    Run benchmarks matching the regular expression. 
    By default, no benchmarks run. 

-test.run pattern 
    Run only those tests and examples matching the regular 
    expression. 

Để thuận tiện, mỗi người trong các -test.X cờ của nhị phân thử nghiệm là cũng có sẵn như là lá cờ -X trong 'go test' riêng của mình.

Để được trợ giúp,

$ go help testflag 

Ví dụ,

go test -test.bench MapTravel 
go test -test.bench MapGet 

hoặc

go test -bench MapTravel 
go test -bench MapGet 

Để bỏ qua chức năng kiểm tra, bao gồm một mô hình -test.run đó lọc ra tất cả các thử nghiệm duy nhất. Ví dụ,

go test -test.bench MapTravel -test.run=thisexpressionwontmatchanytest 

hoặc

go test -bench MapTravel -run=^$ 
+3

Chỉ có một điểm chuẩn chạy, nhưng mehonds thử nghiệm khác như 'func TestMapGet (t * testing.T)' mà không phải là chạy benchmark quá. Vì vậy, làm thế nào để chạy một điểm chuẩn mà không cần chạy thử nghiệm khác? – hardPass

+0

Xem câu trả lời đã sửa đổi của tôi. – peterSO

+5

Lưu ý rằng bạn không cần tiền tố 'test.' trong các cờ, bạn chỉ có thể viết' go test -bench MapGet -run XXX' mà không cần phải gõ một chút. (Từ tài liệu: để thuận tiện, mỗi cờ '-test.X' này của nhị phân thử nghiệm cũng có sẵn dưới dạng cờ' -X' trong 'go test'.) –

0

thử nghiệm chỉ TestFuncOne

$>> go test -run TestFuncOne 

stuff_to_test.go

TestFuncOne() { 
} 

TestFuncTwo() { 
} 
2

Không có cờ nào bạn có thể cung cấp, điều đó sẽ chỉ chạy điểm chuẩn (hoặc chỉ một điểm chuẩn). only flags related là:

- regexp reg2 Chạy điểm chuẩn phù hợp với cụm từ thông dụng. Theo mặc định, không có điểm chuẩn nào chạy. Để chạy tất cả các điểm chuẩn, sử dụng '-bench'. hoặc '-bench =.'.

-run regexp Chỉ chạy các thử nghiệm và ví dụ đó khớp với cụm từ thông dụng .

Vì vậy, nếu bạn muốn chỉ để chạy một điểm chuẩn, bạn có thể làm điều này:

go test -bench=nameOfYourBenchmark -run=^a 

Điều này sẽ gây ra để chỉ chạy thử nghiệm bắt đầu với a. Và bởi vì mỗi thử nghiệm nên được đặt tên là Test<something>, sẽ không có thử nghiệm nào để chạy.

Để chạy chỉ tiêu chuẩn:

go test -bench=. -run=^a 
Các vấn đề liên quan