func Test_something(t *testing.T) {
    // TEST CASE1: pass an array 
      // some logic here

    // TEST CASE2: pass an EMPTY array --> this will cause test to fail
      // some logic here

    // TEST CASE3: pass something else 
      // some logic here

我正在编写一些单元测试,但我不确定是否可以运行一个包含多个测试用例的测试Test_something,如果其中一个测试用例失败,则不停止执行其他测试用例.或者这有意义吗?

在控制台中,我想看到这样的东西.

TESTCASE1: SUCCESS <message>
TESTCASE2: FAIL <message>
TESTCASE3: SUCCESS <message>

现在我得到了这样的结果:

TESTCASE1: SUCCESS <message>
TESTCASE2: FAIL <message>

TESTCASE2次失败后,它将自然停止执行.

推荐答案

您可以在testing.T.Run函数的帮助下使用子测试.它允许将多个测试用例收集在一起,并对每个测试用例具有单独的状态.

func TestSomething(t *testing.T) {
    t.Run("first test case", func(t *testing.T) {
        // implement your first test case here
    })
    t.Run("second test case", func(t *testing.T) {
        // implement your second test case here
    }
}

Go相关问答推荐

如何在定制普罗米修斯出口商中测试动态计量注册?

GORM没有从 struct 创建完整的表,如何修复?

Golang测试容器,无法使网络正常工作

在Uber FX中实现后台进程正常关闭的正确方式是什么?

如果values.yaml文件中不存在某个属性,如何返回默认的FALSE?

如何在出现错误时停止从通道读取?

go测试10m后如何避免超时

Golang Gorm Fiber - 如何将定义为别名的名称发送到索引模板?

使用 Golang 获取目录磁盘使用情况

在 Golang 中查看目录是否可写的跨平台方式?

替换字符串中的最后一个字符

Get 请求在 Thunder 客户端/Postman 中返回数据,但在 Golang 代码中给出空白数据

不能使用 mockDB(*MockDB 类型的变量)作为 struct 文字中的 *gorm.DB 值

为超时的单元测试创​​建 deadlineExceededError:true

Golang 构建多平台问题

为什么此代码在运行命令 error="exec: not started" 时出现错误?

如何在 Golang 中使用具有相同名称或特定关键字的行或列重新排列/排序 CSV

curl:(56)Recv失败:连接由golang中的对等方与docker重置

Go GCP 同时模拟两个服务帐户

如何从应用程序调用谷歌云身份 API