我对googletest的日志输出感到困惑

问题描述 投票:0回答:1

我正在学习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版本,但现象是一样的

unit-testing googletest
1个回答
0
投票

您有一个包含两个断言的测试。这对于所有基于 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
}
© www.soinside.com 2019 - 2024. All rights reserved.