【问题标题】:How to abort testing if critical tests fail如果关键测试失败,如何中止测试
【发布时间】:2020-05-13 09:40:04
【问题描述】:

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

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

我考虑过的一些选项:

  • 我查看了设置 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...
}

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

【问题讨论】:

  • 这能回答你的问题吗? Stop on first test failure with `go test`
  • 或者您只希望它用于特定测试?
  • 这无济于事,因为第一个失败的测试不一定是关键测试。
  • panic() 可能比os.Exit() 更好,因为至少运行了延迟函数。我原以为测试会在测试恐慌后继续进行,但在我做的测试中似乎没有。
  • 你可以使用FailNow

标签: go testify


【解决方案1】:

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

go test -failfast

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-19
    • 1970-01-01
    • 2021-09-17
    相关资源
    最近更新 更多