2017-03-16 56 views

回答

3

在Google Test TearDown中有沒有辦法檢查測試是否失敗?

是的,你可以做,在 進行查詢::testing::Test::HasFailure()您的燈具的測試案例和使用結果的 相對部件可在其TearDown()查詢夾具相符故障。一個基本的例子:

#include <gtest/gtest.h> 
#include <iostream> 

struct Fixture : public ::testing::Test { 
    virtual void SetUp() { 
     fails = 0; 
    } 

    virtual void TearDown() { 
     if (fails > 0) { 
      std::cerr << "Fixture::TearDown sees failures" << std::endl; 
     } 
    } 

    unsigned fails; 
}; 

TEST_F(Fixture, foo) { 
    EXPECT_EQ(1,0); 
    fails += ::testing::Test::HasFailure(); 
} 
TEST_F(Fixture, bar) { 
    EXPECT_EQ(1,1); 
    fails += ::testing::Test::HasFailure(); 
} 

int main(int argc, char **argv) { 
    testing::InitGoogleTest(&argc, argv); 
    return RUN_ALL_TESTS(); 
} 

輸出:

[==========] Running 2 tests from 1 test case. 
[----------] Global test environment set-up. 
[----------] 2 tests from Fixture 
[ RUN  ] Fixture.foo 
/home/imk/dev/so/gtest/main.cpp:19: Failure 
     Expected: 1 
To be equal to: 0 
Fixture::TearDown sees failures 
[ FAILED ] Fixture.foo (0 sec) 
[ RUN  ] Fixture.bar 
[  OK ] Fixture.bar (0 sec) 
[----------] 2 tests from Fixture (0.001 sec total) 

[----------] Global test environment tear-down 
[==========] 2 tests from 1 test case ran. (1 ms total) 
[ PASSED ] 1 test. 
[ FAILED ] 1 test, listed below: 
[ FAILED ] Fixture.foo 

1 FAILED TEST