我有大量通過 GoogleTest 運行的單元測驗。目前,其中一個(稱為 fooTest)在運行完整的測驗套件時失敗,但在單獨運行時通過。因此,在 fooTest 之前運行的一個(或多個)測驗正在做一些導致它失敗的事情,這對于測驗來說當然是一個很大的問題,我顯然想找到罪魁禍首。
這是在默認運行條件下發生的,因此測驗順序始終相同。fooTest 大約是這個運行順序的一半,并且有足夠的測驗,測驗的后半部分的運行時間很重要,尤其是在多次運行的情況下。
所以我想將 googletest 設定為在 fooTest 運行后始終停止測驗運??行——無論它通過還是失敗。我知道我可以做--gtest_break_on_failure,但是如果我做一個導致 fooTest 通過的測驗運行,我仍然想停在那里而不經歷其他所有事情。我可以運行除錯并在測驗后添加斷點,但這也會減慢速度,感覺不太理想。
看起來這可能是一個簡單的設定,但我還沒有找到任何東西。我希望有一個我可以使用的運行引數,或者一個技巧來實作這一點。
uj5u.com熱心網友回復:
你有幾個選擇:
只需在. _
fooTest創建一個測驗夾具。
SetUp檢查始終為假的標志,但如果執行則設定為真fooTest。像這樣的東西:
bool skip_testing = false;
// Class for test fixture
class MyTestFixture : public ::testing::Test {
protected:
void SetUp() override {
if (skip_testing) {
GTEST_SKIP();
}
}
};
TEST_F(MyTestFixture, test1) {
//
EXPECT_EQ(1, 1);
}
TEST_F(MyTestFixture, footest) {
EXPECT_EQ(1, 1);
skip_testing = true;
}
TEST_F(MyTestFixture, test2) {
//
EXPECT_EQ(1, 1);
}
TEST_F(MyTestFixture, test3) {
//
EXPECT_EQ(1, 1);
}
在此處查看一個作業示例:https ://godbolt.org/z/8dzKGE6Eh
- 與選項 2 類似,但使用顯式成功和失敗代替
SetUp.GTEST_SKIP但是GTEST_SKIP最好使用 using,因為您的輸出將顯示測驗已被跳過。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/468139.html
