亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Go 中測試生命周期。是否可以在不重復代碼的情況下添加拆卸方法?

在 Go 中測試生命周期。是否可以在不重復代碼的情況下添加拆卸方法?

Go
斯蒂芬大帝 2023-05-08 15:27:38
我一個月前開始使用 Go。我來自 java/kotlin 背景,我想了解是否有可能實現我在這些語言中所做的一些相同的事情,即使是在 Go 中。我目前的問題是這個。我有一組集成測試用例,我需要在其中初始化一些東西然后清理資源:我相信這是一個常見的用例。如果可能的話,這是我想要實現的一些偽代碼:for each test {  init resources  run test {     init test resources     execute method under test     assert  }  clean resources}目前,我可以嘗試的是這種方法:func TestMain(m *testing.M) {    setup()    code := m.Run()     shutdown()    os.Exit(code)}如果不是在包級別運行,一般來說這很好。目前這并沒有給我太多控制權,因為我想為每個測試文件運行其中一個。(至少這是我注意到的,如果我對此有誤,請告訴我)目前我正在做的基本上是為每個測試運行初始化,但這確實是很多重復的代碼:address, tearDownTestCase := testutils.SetupTestCase(emptyContext, postRouter(login.LoginUser), "/login")defer tearDownTestCase()// init test use case data// run test// clean use case data你認為有更好的方法嗎?
查看完整描述

1 回答

?
繁星點點滴滴

TA貢獻1803條經驗 獲得超3個贊

Go 沒有支持拆解方法的內置功能。但是,有多個第三方包可以實現這一點。其中,我最喜歡銀杏包。它非常有表現力并且避免了代碼重復。

樣本測試看起來像

var _ = Describe("Book", func() {

? ? var (

? ? ? ? longBook? Book

? ? ? ? shortBook Book

? ? )


? ? BeforeEach(func() {

? ? ? ? longBook = Book{

? ? ? ? ? ? Title:? "Les Miserables",

? ? ? ? ? ? Author: "Victor Hugo",

? ? ? ? ? ? Pages:? 1488,

? ? ? ? }


? ? ? ? shortBook = Book{

? ? ? ? ? ? Title:? "Fox In Socks",

? ? ? ? ? ? Author: "Dr. Seuss",

? ? ? ? ? ? Pages:? 24,

? ? ? ? }

? ? })


? ? Describe("Categorizing book length", func() {

? ? ? ? Context("With more than 300 pages", func() {

? ? ? ? ? ? It("should be a novel", func() {

? ? ? ? ? ? ? ? Expect(longBook.CategoryByLength()).To(Equal("NOVEL"))

? ? ? ? ? ? })

? ? ? ? })


? ? ? ? Context("With fewer than 300 pages", func() {

? ? ? ? ? ? It("should be a short story", func() {

? ? ? ? ? ? ? ? Expect(shortBook.CategoryByLength()).To(Equal("SHORT STORY"))

? ? ? ? ? ? })

? ? ? ? })

? ? })

})

相似之處還有其他生命周期方法afterEach,如justBeforeEach等。


查看完整回答
反對 回復 2023-05-08
  • 1 回答
  • 0 關注
  • 142 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號