英文:
How to run all test cases even if one test case fails
问题
func Test_something(t *testing.T) {
// 测试用例1:传递一个数组
// 这里是一些逻辑
// 测试用例2:传递一个空数组 --> 这将导致测试失败
// 这里是一些逻辑
// 测试用例3:传递其他内容
// 这里是一些逻辑
}
我正在编写一些单元测试,但我不确定是否可以运行一个名为Test_something
的测试,其中包含多个测试用例,而不会在一个失败后停止执行其他测试用例。这样做是否有意义?
在控制台上,我希望看到类似于以下内容:
TESTCASE1: SUCCESS <message>
TESTCASE2: FAIL <message>
TESTCASE3: SUCCESS <message>
目前,我得到的结果类似于:
TESTCASE1: SUCCESS <message>
TESTCASE2: FAIL <message>
它会在TESTCASE2
失败后自然停止执行。
英文:
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
I am writing some unit tests but I am not sure if it's possible to run a test Test_something
that has several test cases without stopping the execution of other test cases if one fails. Or does it even make sense?
In console I would like to see something like this.
TESTCASE1: SUCCESS <message>
TESTCASE2: FAIL <message>
TESTCASE3: SUCCESS <message>
At the moment I get something like this:
TESTCASE1: SUCCESS <message>
TESTCASE2: FAIL <message>
It will naturally stop executing after TESTCASE2
fails.
答案1
得分: 1
使用 t *testing.T
,你可以调用以下函数:
t.Errorf(...)
: 它不会停止后续的测试。t.Fatalf(...)
: 它会停止后续的测试。
详细信息请参考官方文档。
英文:
with t *testing.T
you may call:
t.Errorf(...)
: it will not stop next tests.t.Fatalf(...)
: it will stop next tests.
See official doc.
答案2
得分: 1
你可以使用testing.T.Run
函数来使用子测试。它允许将多个测试用例组合在一起,并为每个测试用例分别设置状态。
func TestSomething(t *testing.T) {
t.Run("第一个测试用例", func(t *testing.T) {
// 在这里实现你的第一个测试用例
})
t.Run("第二个测试用例", func(t *testing.T) {
// 在这里实现你的第二个测试用例
})
}
英文:
You can use subtest with the help of the testing.T.Run
function. It allows to gather several test cases together and have separate status for each of them.
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
}
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论