猿问

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

我有以下代码用于我正在编写的草稿测试。在测试函数中,我正在创建一些json。

我已经阅读了有关存储测试文件的信息。testdata

但是,我正在考虑实现类似结构的东西,我可以实现它来提供返回可重用的json片段以用于测试的方法,例如:

  • 有效的作者 json

  • 无效的作者缺少 id 属性

  • 无效的数据部分,缺少 id 属性

这样,我就不必在每个测试中复制和粘贴相同的json片段,也可以避免从文件夹中的磁盘读取json,从而保持运行测试的速度。testdata

如果我添加一个包含此类实现的包,它应该位于何处,以便将其从最终可执行/发布中排除?我知道以 结尾的源文件不包括在内。go 是否提供类似特殊测试包的东西,其中包含用于测试的测试帮助程序结构/函数?_test.go

func 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)

}

更新


接受的答案和此链接被认为是对我的问题的简明相关答案。


慕森卡
浏览 124回答 1
1回答

蝴蝶刀刀

您可以将测试帮助程序放在单独的包中,如果只有测试文件引用(导入)它,则它不会包含在非测试可执行二进制文件中。它没有像具有后缀的测试文件那样的约定。如果正在构建的包引用了它(无论是测试还是非测试),它将被包括在内。否则不会。_test.go另请注意,您可以使用特殊文件夹来保存静态数据文件以供测试,该工具会忽略它。引用自 Command go: Test packages:testdatagogo工具将忽略名为“testdata”的目录,使其可用于保存测试所需的辅助数据。
随时随地看视频慕课网APP

相关分类

Go
我要回答