2017-05-04 205 views
-1

爲什麼會這樣呢? 如果只完成函數B的單元測試,那麼函數A的覆蓋率爲50%。 即使我們將函數B的值設爲(1,2,3) 它將覆蓋第一個函數的if和else,但爲什麼覆蓋率仍然是50%?給定代碼的代碼覆蓋

Public int A(int a,int b) 
{ 
if (a%2==0) 
     return a; 
else 
    return b; 
} 


Public int B (int a,int b,int c) 
{ 
int val=A(a,b);  
val=A(val,c); 
    } 
+0

靜態代碼分析不能跨語義塊。那就是該工具無法通過'B'的'A'檢測代碼路徑。 –

+0

如果我們在紙上做代碼覆蓋,該怎麼辦?像空轉一樣。 – Arslan

+0

這與c#或C++有什麼關係? – CodingNinja

回答

0

你一定在做錯事。它顯示了100%的覆蓋率。下面是測試(目的是不顯示,這是否是一個很好的測試或沒有,但回答你的問題):

[TestMethod] 
public void SomeTest() 
{ 
    ClassLibrary1.Class1 csl = new ClassLibrary1.Class1(); 
    csl.B(1, 2, 3); 

    Assert.IsTrue(true); 
} 

,這裏是該測試的覆蓋率結果:

enter image description here enter image description here