测试JUnit中方法的合法和非法参数

Zzz*_*... 2 java junit junit4

如果我想测试输入是否有效,我如何使用JUnit4来测试该方法是否处理非法输入/参数?

要调用setAge()方法,参数必须是整数而不是char或string.

@Test
public void testWHetherInputValid() {
    Person p = new Person();
    String s = "abc";
    p.setAge(s); // but actually, the correct input must be an integer
}
Run Code Online (Sandbox Code Playgroud)

Mur*_*nik 5

如果setAge接收到int,那么编写一个将传递String给它的测试没有意义- 这样的调用甚至不会编译.

测试用于捕获编译器无法检测的运行时错误.例如,假设a Person的年龄必须是正整数.-1例如,传递应该导致函数抛出IllegalArgumentException- 可以通过在@Test注释中指定预期的异常来测试:

@Test(expected = IllegalArgumentException.class)
public void testWHetherInputValid() {
    Person p = new Person();
    int invalidAge = -1;
    p.setAge(invalidAge);
}
Run Code Online (Sandbox Code Playgroud)