2016-01-20 30 views
6

Python dünyasından gelen demirbaşlar çok faydalıdır (Armatürler öncelikle birim test için tekrar kullanılabilir durum/destek mantığı için bir Python sözleşmesi tanımlar). Golang'da benzer testlerin olup olmadığını test etmemi sağlıyorum, bu da benim testlerimi sunucunun kurulması, yırtıp gitmesi gibi bazı önceden tanımlanmış armatürler ile test etmeme izin verebilir mi? Birisi beni Golang'da yapmanın bazı örneklerini gösterebilir mi?Golang testindeki armatürler

+1

ara üzerinden [Ginkgo] (https://onsi.github.io/ginkgo). – PieOhPah

+0

Teşekkürler @ pie-o-pah – psbits

cevap

6

Standart Go test araçlarını kullanmak isterseniz, TestMain(m *testing.M) imzasına sahip bir işlev tanımlayabilir ve fikstür kodunuzu oraya koyabilirsiniz. testing package wiki itibaren

:

bir test programı öncesinde veya test sonrasında ekstra kurulum veya söküm yapmak benim için bazen gereklidir. Ayrıca ana kod üzerinde hangi kodun çalıştığını kontrol etmek için bir test yapılması gerekebilir. Bir test dosyası bir fonksiyonu varsa, bu ve diğer durumlarda desteklemek için:

func TestMain(m *testing.M)

sonra oluşturulan test yerine doğrudan testlerini gerçekleştirme TestMain (m) çağıracaktır. TestMain ana goroutine çalışır ve m.Run'a yapılan bir çağrı etrafında ne tür bir kurulum ve teardown gerekli olursa olsun yapabilir. Daha sonra m.Run sonucu os.Exit'i çağırmalıdır. TestMain çağrıldığında, flag.Parse çalıştırılmamış. TestMain, test paketininkileri de dahil olmak üzere komut satırı bayraklarına bağlıysa, bayrağı çağırmalıdır. Açıkça ifade edin.

TestMain basit bir uygulamasıdır: `BeforeEach` ve 'AfterEach` sahip

func TestMain(m *testing.M) { 
    flag.Parse() 
    os.Exit(m.Run()) 
}