我的基於微軟的開發環境,以獲得真正的代碼覆蓋率如下: - 巨大的本地C++代碼庫,分爲10個項目 - 每個項目都有一個相關的測試項目(GoogleTest單元測試)中,測試來源只是簡單的參考。如何使用vsinstr/vsperfmon
我使用vsinstr和vsperfmon(visual studio工具來監測/監控可執行文件和dll)生成覆蓋率報告,但這並不像我期望的那麼令人滿意,因爲報告僅顯示單元測試的覆蓋率行,而不是來自測試源(我測試了測試套件可執行的Sample_Project_Test.exe)。
例如,如果我有這樣的方法:
(Sample_Project/add_ints.cpp)
int add(int a, int b){
return a+b;
}
int add2(int a, int b){
if (a == b)
return a * 2;
else
return a+b;
}
和單元測試是這樣的:
(Sample_Project_Test/int_adds_tests.cpp)
TEST(AddTest, ReturnsCorrectSum)
{
EXPECT_EQ(4, add(2,2));
}
我得到100%的線的覆蓋,因爲只有該加載部在add_ints.cpp中,add2似乎被完全刪除,因爲它沒有被觸及。據我不明白整個報道錯誤這似乎不正確?
進一步的調查顯示,也包括但未被援引的類也不包括在覆蓋報告中。也許我錯過了一個命令行選項來包含它們呢? – lakai 2009-09-18 11:26:10
順便說一句:問題應該可能更像「如何獲得_real_代碼覆蓋使用vsinstr/vsperfmon」 – Dmitry 2009-09-18 15:10:09
感謝提示,改變了它! – lakai 2009-09-21 05:43:39