1

在 Go 中,如果其中一个测试失败,有没有办法提前中止一组测试?

我正在使用stretchr/testify套件,但这只是建立在基本的 go测试功能之上。

我考虑过的一些选项:

  • 我查看了设置 testing.failFast 但它没有被导出。
  • 不推荐使用 os.Exit(),因为它可能会弄乱测试输出等。
  • 在第一次失败时停止是不够的,因为第一次失败可能不在关键测试中

我可以添加自己的标志,然后添加到每个测试中:

if criticalTestFailed {
    t.skipTest()
}

但这是添加到每个测试中的重复且烦人的样板。我想要的是这样的:

func (suite *MySuite) TestCritcalTest() {
   t := MySuite.T()
   defer func() {
      if t.Failed() {
          MySuite.SkipRemainingTests() //does not exist    
      }
   }()

   // some tests here...
}

这里有一个常见的做法吗?

4

1 回答 1

2

go test -failfast标志会在任何测试失败后禁用运行其他测试。请注意,允许完成与失败测试并行运行的测试。--来自golang网站

go test -failfast
于 2020-05-13T13:41:46.310 回答