任务描述
学员写一个Junit异常测试,用来判断实例化的对象数据是否合法。
相关知识
Junit异常测试
Junit 用代码处理提供了一个追踪异常的选项。你可以测试代码是否它抛出了想要得到的异常。通过@Test
元数据中的expected
属性验证是否抛出期望的异常,expected
属性的值是一个异常的类型,如果抛出了期望的异常,则测试通过,否则不通过。
现在让我们看下 @Test(expected=* .class)
注解的具体使用。
代码示例
//ExceptionTest.java
public class ExceptionTest {
@Test(expected = ArithmeticException.class)
public void divisionWithException() {
int i = 1/0;
}
}
编程要求
本关的任务是写一个Junit异常测试,用来判断实例化的对象数据是否合法。具体在JunitException.java
中补全异常测试代码:要求判断Person
类中实例化的对象年龄是否合法,如果不合法则抛出IllegalArgumentException
异常。
Person类代码如下:
//Person.java
public class Person {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
if (age < 0 ) {
throw new IllegalArgumentException("age is invalid");
}
this.age = age;
}
}
测试类JunitException.java
的代码如下:
package step2;
import static org.junit.Assert.*;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import step2.Person;
public class JunitException {
/**
*请在Begin/End内加一行注解,要求检查Person对象的年龄是否合法,不合法则
*抛出IllegalArgumentException异常
*/
/************************************Begin**********************************************/
@Test(expected = IllegalArgumentException.class)
/************************************End************************************************/
public void checkage() {
Person person = new Person();
person.setAge(-1);
}
}