簡體   English   中英

如何在visual studio中運行單個google測試?

[英]How to run single google test in visual studio?

我為google測試配置了visual studio。 然后我在vs2010中寫了一些簡單的google測試用例,如下所示:

TEST(simpleTest, test1){
    float base = 4.f;
    float exponent = 1.f;
    float expectedValue = 4.f;
    float actualValue = pow(base, exponent);
    EXPECT_FLOAT_EQ(expectedValue, actualValue);
}
TEST(simpleTest, test2){
    float base = 4.f;
    float exponent = 2.f;
    float expectedValue = 16.f;
    float actualValue = pow(base, exponent);
    EXPECT_FLOAT_EQ(expectedValue, actualValue);
}
int main(int argc, char **argv) {
  ::testing::InitGoogleTest(&argc, argv);
  RUN_ALL_TESTS();
}

我的問題是如何運行並非所有(RUN_ALL_TESTS)測試,而是一個特定的測試用例? 有沒有宏,例如RUN(simpleTest.test1);

如果需要,可以使用GTEST_FLAG宏將命令行標志編譯到測試可執行文件中(請參閱運行測試程序:高級選項

例如,在您的情況下,您可以這樣做:

int main(int argc, char **argv) {
  ::testing::GTEST_FLAG(filter) = "simpleTest.test1";
  ::testing::InitGoogleTest(&argc, argv);
  RUN_ALL_TESTS();
}

但是,這樣的硬編碼測試過濾器通常是不合需要的,因為每次要更改過濾器時都需要重新編譯。

至於通過Visual Studio在運行時傳遞標志,我想你知道你可以在目標的屬性頁的“調試”選項中將--gtest_filter=simpleTest.test1添加到命令參數中嗎?

沒有用於指定單個測試的宏。 只有RUN_ALL_TESTS。

我認為這是設計的,因為通常運行所有測試都是可取的。 但是,如果你想把它放在代碼中,只需偽造命令行參數,如下所示:

const char *testv[2]=
{
    "gtest",
    "--gtest_filter=simpleTest.test1",
};
int testc=2;

::testing::InitGoogleTest(&testc, (char**)testv);
int result = RUN_ALL_TESTS();

我還沒有真正理解你是否確實要對你的單個測試進行硬編碼,或者你是否想在測試執行時決定應該運行哪個單一測試。 如果后者是您想要的,您可以使用這些VS擴展,將您的測試集成到VS'測試資源管理器中:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM