t.Error vs. t.Fatal

正如在执行策略中讨论的一样, 测试过程不应该在遇到问题的地方中断。

然而,有些情况需要终止当前测试。当某些测试需要标记失败时,调用t.Fatal是合适的,特别是在 使用测试辅助函数时,没有它,你就不能运行测试的其余部分。在表格驱动的测试中,t.Fatal适合于在测试在进入循环之前整个测试函数标记为失败状态。它只会影响整个测试列表中被标记为失败的测试函数不能继续向前推进, 而不会影响其他的测试函数, 所以, 错误报告应该像下面这样:

  • 如果你不使用 t.Run子 测试,使用 t.Error,后面跟一个 continue 语句,继续到下一个测试项。
  • 如果你使用子测试(并且你在调用t.Run时),使用t.Fatal,结束当前子测试,并允许你的测试用例进入下一个子测试。

警告:调用和t.Fatal和类似函数并不总是安全的。