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