首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >异常测试- Junit 4

异常测试- Junit 4
EN

Stack Overflow用户
提问于 2017-11-30 15:00:09
回答 2查看 227关注 0票数 0

我是学习Junit的学生,据我所知,什么异常测试对这段代码在“空”、“空”和“失败”上运行Junit测试有好处

代码语言:javascript
运行
复制
public Profile(List<Grade> g) {
    throw new IllegalArgumentException();
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-30 15:07:23

您可以使用类似的异常测试。

代码语言:javascript
运行
复制
@Test(expected = IllegalArgumentException.class)
public void profileTest() {
    //your logic
}
票数 1
EN

Stack Overflow用户

发布于 2017-11-30 17:12:15

在jUnit 4中测试抛出异常的方法最清晰、最灵活的方法是使用ExpectedException规则。在你的测试课的第一名:

代码语言:javascript
运行
复制
@Rule
public ExpectedException thrown = ExpectedException.none();

这将在每次测试之前设置thrown,以期望没有异常,并在每次测试之后调用它,以检查是否引发异常。

在个人测试中:

代码语言:javascript
运行
复制
@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)表单,它很容易在视觉上被忽略,并且限制了您可以进行多少验证。

还有一种自己动手的方法:

代码语言:javascript
运行
复制
 @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更容易、更清晰、更标准、更强大。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47576416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档