我正在学习googletest。我写了一个程序如下。
TEST(FactorialTest, Negative) {
EXPECT_EQ(add(1,1),2); // PASS
EXPECT_EQ(add(1,2),3); // PASS
}
int main(int argc,char **argv)
{
printf("Running main() from %s\n", __FILE__);
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
return 0;
}
当我运行程序时。日志是:
[==========] Running 1 test from 1 test suite.
[----------] Global test environment set-up.
[----------] 1 test from FactorialTest
[ RUN ] FactorialTest.Negative
[ OK ] FactorialTest.Negative (0 ms)
[----------] 1 test from FactorialTest (0 ms total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test suite ran. (0 ms total)
[ PASSED ] 1 test.
我想知道,源代码中有2个测试。但为什么日志显示“已运行 1 个测试套件中的 1 个测试”。 。我认为日志应该输出“运行了 1 个测试套件中的 2 个测试。”
我以为是googletest版本问题,于是尝试了11和12版本,但现象是一样的
您有一个包含两个断言的测试。这对于所有基于 xUnit 的测试框架都是相同的。
如果断言失败,几乎所有 xUnit 框架都会停止测试。尝试通过期待错误的答案来故意打破这两个断言:
TEST(FactorialTest, Negative) {
EXPECT_EQ(add(1,1),20); // FAIL
EXPECT_EQ(add(1,2),30); // FAIL? How will we know if it doesn't run?
}
我希望这会告诉您第一次失败的情况,然后停止。有时这就是你想要的。但在这种情况下,它隐藏了有用的信息。
要获得这两个结果,请将它们放入不同的测试用例中:
TEST(Suite, Add1) {
EXPECT_EQ(add(1,1),20); // FAIL
}
TEST(Suite, Add2) {
EXPECT_EQ(add(1,2),30); // FAIL
}