2016-01-20 21 views
6

Đến từ thế giới python, đồ đạc rất hữu ích (Đồ đạc định nghĩa một hợp đồng Python cho trạng thái có thể tái sử dụng/logic hỗ trợ, chủ yếu để thử nghiệm đơn vị). Tôi đã tự hỏi liệu có hỗ trợ tương tự ở Golang có thể cho phép tôi chạy thử nghiệm của mình với một số đồ đạc được xác định trước như thiết lập máy chủ, rách nó xuống, thực hiện một số nhiệm vụ lặp lại mỗi lần chạy thử không? Ai đó có thể chỉ cho tôi một số ví dụ về làm như vậy ở Golang không?Đồ đạc trong thử nghiệm Golang

+1

Check-out [Ginkgo] (https://onsi.github.io/ginkgo) trong đó có 'BeforeEach' và' AfterEach'. – PieOhPah

+0

Cảm ơn @ pie-o-pah – psbits

Trả lời

6

Nếu bạn muốn sử dụng công cụ kiểm tra Go chuẩn, bạn có thể xác định hàm có chữ ký TestMain(m *testing.M) và đặt mã cố định vào đó.

Từ testing package wiki:

Đó là đôi khi cần thiết cho một chương trình thử nghiệm để làm thêm thiết lập hoặc teardown trước hoặc sau khi thử nghiệm. Đôi khi cũng cần thiết cho một thử nghiệm để kiểm soát mã nào chạy trên luồng chính. Để hỗ trợ những điều này và các vụ việc khác, nếu một tập tin thử nghiệm có chứa một hàm:

func TestMain(m *testing.M)

sau đó kiểm tra được tạo ra sẽ gọi TestMain (m) thay vì chạy các bài kiểm tra trực tiếp. TestMain chạy trong goroutine chính và có thể làm bất cứ điều gì thiết lập và teardown là cần thiết xung quanh một cuộc gọi đến m.Run. Sau đó nó sẽ gọi os.Exit với kết quả của m.Run. Khi TestMain được gọi, flag.Parse chưa được chạy. Nếu TestMain phụ thuộc vào cờ dòng lệnh, bao gồm cả cờ thử nghiệm, nó sẽ gọi flag.Parse một cách rõ ràng.

Một thực hiện đơn giản của TestMain là:

func TestMain(m *testing.M) { 
    flag.Parse() 
    os.Exit(m.Run()) 
} 
Các vấn đề liên quan