为了账号安全,请及时绑定邮箱和手机立即绑定

如何提供可重用的测试包来提供测试帮助程序函数/结构?

如何提供可重用的测试包来提供测试帮助程序函数/结构?

Go
慕森卡 2022-08-01 15:32:02
我有以下代码用于我正在编写的草稿测试。在测试函数中,我正在创建一些json。我已经阅读了有关存储测试文件的信息。testdata但是,我正在考虑实现类似结构的东西,我可以实现它来提供返回可重用的json片段以用于测试的方法,例如:有效的作者 json无效的作者缺少 id 属性无效的数据部分,缺少 id 属性这样,我就不必在每个测试中复制和粘贴相同的json片段,也可以避免从文件夹中的磁盘读取json,从而保持运行测试的速度。testdata如果我添加一个包含此类实现的包,它应该位于何处,以便将其从最终可执行/发布中排除?我知道以 结尾的源文件不包括在内。go 是否提供类似特殊测试包的东西,其中包含用于测试的测试帮助程序结构/函数?_test.gofunc TestUnmarshalAuthor(t *testing.T) {    sampleData := []byte(`{        "data": {            "attributes": {                "author": "ted",                "id": "400300"            },            "created_on": "2021-01-09T16:39:44.935Z",            "id": "ad27e265-9605-4b4b-a0e5-3003ea9cc4dc",            "modified_on": "2021-01-09T16:39:44.935Z",            "type": "authors"        },        "links": {            "me": "/api/authors/ad27e265-9605-4b4b-a0e5-3003ea9cc4dc"        }    }`)    log.Println("TestUnmarshalAuthor")    log.Println("Trying to unmarshal the data")    var data MyAPIResponse    err := json.Unmarshal(sampleData, &data)    if err != nil {        log.Println("Error unmarshalling")    }    log.Println(data.Links.Me)    log.Println(data.Data.Attributes)    assert.Equal(t, "authors", data.Data.Type)}更新接受的答案和此链接被认为是对我的问题的简明相关答案。
查看完整描述

1 回答

?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

您可以将测试帮助程序放在单独的包中,如果只有测试文件引用(导入)它,则它不会包含在非测试可执行二进制文件中。

它没有像具有后缀的测试文件那样的约定。如果正在构建的包引用了它(无论是测试还是非测试),它将被包括在内。否则不会。_test.go

另请注意,您可以使用特殊文件夹来保存静态数据文件以供测试,该工具会忽略它。引用自 Command go: Test packagestestdatago

go工具将忽略名为“testdata”的目录,使其可用于保存测试所需的辅助数据。


查看完整回答
反对 回复 2022-08-01
  • 1 回答
  • 0 关注
  • 123 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号