Java 异常测试-JUnit4

Java 异常测试-JUnit4,java,Java,我是学习Junit的学生,就我所知,我想知道什么样的异常测试对这段代码在“空”、“空”和“失败”上运行Junit测试有好处 公共配置文件(列表g){ 抛出新的IllegalArgumentException(); } 您可以使用类似的方法进行异常测试 @Test(expected = IllegalArgumentException.class) public void profileTest() { //your logic } 您可以使用异常测试之类的东西 @Test(expect

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

公共配置文件(列表g){
抛出新的IllegalArgumentException();
}

您可以使用类似的方法进行异常测试

@Test(expected = IllegalArgumentException.class)
public void profileTest() {
    //your logic
}

您可以使用异常测试之类的东西

@Test(expected = IllegalArgumentException.class)
public void profileTest() {
    //your logic
}

测试JUnit4中抛出异常的方法最清晰、最灵活的方法是使用
ExpectedException
规则。在您的测试类的顶部:

@Rule
public ExpectedException thrown = ExpectedException.none();
这将在每个测试之前设置抛出的
,以不期望出现异常,并在每个测试之后调用它以检查是否抛出异常

在单独测试中:

@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
更简单、更清晰、更标准、更强大。

测试JUnit4中抛出异常的方法最清晰、最灵活的方法是使用
ExpectedException
规则。在您的测试类的顶部:

@Rule
public ExpectedException thrown = ExpectedException.none();
这将在每个测试之前设置抛出的
,以不期望出现异常,并在每个测试之后调用它以检查是否抛出异常

在单独测试中:

@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
更简单、更清晰、更标准、更强大。

看看这个api:看看这个api:ty,你有什么可以帮助我的“列表”资源吗?我有arraylist的资源(例如new arraylist().get(0);这是空列表)我不明白你想做什么。向我解释一下你的目标。在Junit测试中,@Test(expected=illegalArugmentException.class)public void EmptyTest(){使用该配置文件方法调用empty、null或fail arumgin}ty,你有“list”的资源可以帮助我吗?我有arraylist的资源(例如new arraylist().get(0);这是空列表的资源)我不明白你想做什么。请向我解释一下您的target.so在Junit测试中,@Test(expected=illegalArugmentException.class)public void EmptyTest(){使用该概要文件方法调用empty或null或fail arument}