[英]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.