簡體   English   中英

為什么在測試用例中測量代碼覆蓋率?

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

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