【发布时间】:2018-12-30 11:04:59
【问题描述】:
我使用 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% 覆盖。
为什么要测量测试用例中的代码覆盖率,这是为了什么?
【问题讨论】:
-
除非您告诉它不要捕获测试代码的代码覆盖率,否则它怎么知道不捕获?既然你没有,它就会被捕获。
-
是的,你是对的。测试包可以从 Code Coverage Measure Analysis Scope 中排除。
-
然后写一个包含该内容的自我答案或考虑删除问题。在小评论中保留直接答案的问题是没有意义的。
标签: java junit code-coverage eclemma