2014-04-21 21 views
53

Tôi đang chạy một thử nghiệm trong Go với một tuyên bố để in một cái gì đó (tức là để gỡ lỗi kiểm tra) nhưng nó không in bất cứ điều gì.Làm thế nào để bạn in trong một thử nghiệm Go bằng cách sử dụng gói "thử nghiệm"?

func TestPrintSomething(t *testing.T) { 
    fmt.Println("Say hi") 
} 

Khi tôi chạy đi kiểm tra trong hồ sơ này, đây là kết quả:

ok  command-line-arguments 0.004s 

Cách duy nhất để thực sự có được nó để in, như xa như tôi biết, là để in nó qua t .Error(), như vậy:

func TestPrintSomethingAgain(t *testing.T) { 
    t.Error("Say hi") 
} 

Những kết quả đầu ra này:

Say hi 
--- FAIL: TestPrintSomethingAgain (0.00 seconds) 
    foo_test.go:35: Say hi 
FAIL 
FAIL command-line-arguments 0.003s 
gom: exit status 1 

Tôi đã google và xem qua hướng dẫn nhưng không tìm thấy gì cả.

Trả lời

59

Cấu trúc testing.Ttesting.B cả hai đều có phương thức .Log.Logf nghe có vẻ như bạn đang tìm kiếm. .Log.Logf tương tự với fmt.Printfmt.Printf tương ứng.

Xem thêm chi tiết tại đây: http://golang.org/pkg/testing/#pkg-index

fmt.X báo cáo in làm làm việc bên trong các bài kiểm tra, nhưng bạn sẽ tìm thấy sản lượng của họ có lẽ không phải trên màn hình mà bạn mong đợi để tìm thấy nó và, vì thế, tại sao bạn nên sử dụng phương pháp ghi nhật ký trong testing.

Nếu, như trong trường hợp của bạn, bạn muốn xem nhật ký để kiểm tra không bị lỗi, bạn đã cung cấp go test cờ -v (v cho độ dài). Thêm chi tiết về cờ thử nghiệm có thể được tìm thấy ở đây: http://golang.org/cmd/go/#hdr-Description_of_testing_flags

+6

t.Nhật ký() sẽ không hiển thị cho đến sau khi thử nghiệm hoàn tất, vì vậy nếu bạn đang cố gắng gỡ lỗi một thử nghiệm đang treo hoặc thực hiện có vẻ như bạn cần sử dụng fmt. Xem câu trả lời của PeterSO để sử dụng đi thử nghiệm -v để hiển thị đầu ra của fmt.Println khi chạy thử nghiệm. – voutasaurus

57

Ví dụ,

package verbose 

import (
    "fmt" 
    "testing" 
) 

func TestPrintSomething(t *testing.T) { 
    fmt.Println("Say hi") 
    t.Log("Say bye") 
} 

go test -v 
=== RUN TestPrintSomething 
Say hi 
--- PASS: TestPrintSomething (0.00 seconds) 
    v_test.go:10: Say bye 
PASS 
ok  so/v 0.002s 

Command go

Description of testing flags

-v 
Verbose output: log all tests as they are run. Also print all 
text from Log and Logf calls even if the test succeeds. 

Package testing

func (*T) Log

func (c *T) Log(args ...interface{}) 

Log định dạng đối số của nó sử dụng định dạng mặc định, tương tự như println, và ghi lại các văn bản trong các bản ghi lỗi. Các văn bản sẽ được in chỉ khi thử nghiệm thất bại hoặc cờ -test.v được thiết lập.

+6

'verbose' là thứ tôi đang tìm kiếm. – cevaris

+2

anwa để xem đầu ra nhật ký trong moethod ou đang tự kiểm tra –

Các vấn đề liên quan