![](/img/trans.png)
[英]Why code coverage is different when measured by eCobertura and EclEmma?
[英]Why is code coverage measured in test cases?
我已經使用EclEmma測量了代碼覆蓋率。 我曾希望只有源程序包正在測試中。 令人驚訝的是,還對JUnit測試用例進行了測量。
public class EmailTest {
public static final String VALID_MAIL = "xyz@qwe.abc";
public static final String INVALID_MAIL_WITHOUT_AT = "xyzqwe.abc";
@Test
public void shouldCreateValidEmail() {
Email email = null;
try {
email = new Email (VALID_MAIL);
} catch (NotValidEmailException e) {
Assert.fail();
}
Assert.assertEquals("Email: " + VALID_MAIL + " should be correct created", VALID_MAIL, email.getEmail());
}
@Test(expected = NotValidEmailException.class)
public void shouldThrowExceptionWhenMailHasNoAt() throws NotValidEmailException {
new Email (INVALID_MAIL_WITHOUT_AT);
}
例如,我有一個用於電子郵件正則表達式驗證的基本測試用例。 此測試類別“ EmailTest”的測試覆蓋率為73%。 被測類“電子郵件”的覆蓋率為100%。
為什么要測量測試用例中的代碼覆蓋率?這是做什么用的?
測試包可以從代碼覆蓋率度量分析范圍中排除。
覆蓋范圍->覆蓋范圍配置->覆蓋范圍->分析范圍
您可以從覆蓋范圍中排除測試代碼,但不應這樣做。 覆蓋范圍旨在告訴您有關代碼的重要信息。 您的測試代碼也很重要。 例如,您的測試助手中可能包含永遠不會運行的代碼:您可以刪除該代碼。 否則,您可能會意外地編寫了由於某些原因而從未執行過的測試行。
排除測試代碼的唯一原因是,如果您為自己設定了諸如75%的覆蓋率之類的任意目標,並且不想通過包含測試來“欺騙”。 這些目標沒有意義,所以不要讓它們限制您從覆蓋范圍中發現的內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.