cou*_*ech 11 java junit unit-testing
我正在为一个解析String的构造函数编写一个jUnit测试,然后检查很多东西.当存在错误数据时,对于每个事物,都会抛出一些带有不同消息的IllegalArgumentException.所以我想为它编写测试,但是我如何识别抛出的错误?这是我该怎么做的:
@Test(expected=IllegalArgumentException.class)
public void testRodneCisloRok(){
new RodneCislo("891415",dopocitej("891415"));
}
Run Code Online (Sandbox Code Playgroud)
这就是我想要的方式,但我不知道是否有可能以某种方式编写它:
@Test(expected=IllegalArgumentException.class("error1"))
public void testRodneCisloRok(){
new RodneCislo("891415",dopocitej("891415"));
}
Run Code Online (Sandbox Code Playgroud)
Fil*_*ale 34
如果您有JUnit 4.7或更高版本,您可以使用这种(优雅)方式:
@Rule
public ExpectedException exception = ExpectedException.none();
@Test
public void testRodneCisloRok(){
exception.expect(IllegalArgumentException.class);
exception.expectMessage("error1");
new RodneCislo("891415",dopocitej("891415"));
}
Run Code Online (Sandbox Code Playgroud)
你需要用老式的方式来做:
@Test
public void testRodneCisloRok() {
try {
new RodneCislo("891415",dopocitej("891415"));
fail("expected an exception");
} catch (IllegalArgumentException ex) {
assertEquals("error1", ex.getMessage());
}
}
Run Code Online (Sandbox Code Playgroud)
该@Test(expected=...)语法很方便,但在许多情况下过于简单。
如果区分异常条件很重要,您可能需要考虑开发可以专门捕获的异常类层次结构。在这种情况下, 的子类IllegalArgumentException可能是一个好主意。这可以说是更好的设计,并且您的测试可以捕获特定的异常类型。
| 归档时间: |
|
| 查看次数: |
4699 次 |
| 最近记录: |