我是学习Junit的学生,据我所知,什么异常测试对这段代码在“空”、“空”和“失败”上运行Junit测试有好处
public Profile(List<Grade> g) {
throw new IllegalArgumentException();
}
发布于 2017-11-30 15:07:23
您可以使用类似的异常测试。
@Test(expected = IllegalArgumentException.class)
public void profileTest() {
//your logic
}
发布于 2017-11-30 17:12:15
在jUnit 4中测试抛出异常的方法最清晰、最灵活的方法是使用ExpectedException
规则。在你的测试课的第一名:
@Rule
public ExpectedException thrown = ExpectedException.none();
这将在每次测试之前设置thrown
,以期望没有异常,并在每次测试之后调用它,以检查是否引发异常。
在个人测试中:
@Test
public void applyDiscount_throws_exception_when_customer_is_non_member() {
Order order = new Order(newNonMemberCustomer());
thrown.expect(DiscountEligibilityException.class);
thrown.expectMessage("Cannot apply discount to non-member");
order.applyDiscount(DISCOUNT_CODE);
}
当抛出符合期望的异常时,这种情况就会过去。如果没有抛出任何异常,或者抛出的异常不符合预期,那么它将失败,并对原因进行有用的描述。
在ExpectedException
之前,有一个@Test(expected = ExceptionType.class)
表单,它很容易在视觉上被忽略,并且限制了您可以进行多少验证。
还有一种自己动手的方法:
@Test
public void applyDiscount_throws_exception_when_customer_is_non_member() {
Order order = new Order(newNonMemberCustomer());
try {
order.applyDiscount(DISCOUNT_CODE);
fail("Expected an exception");
} catch(DiscountEligibilityException e) {
assertThat(e.getMessage(), is("Cannot apply discount to non-member");
}
}
..。但是ExpectedException
更容易、更清晰、更标准、更强大。
https://stackoverflow.com/questions/47576416
复制相似问题