在我的程序中,我抛出了一个自定义的异常对象MyCustomException
,如下所示:
public class MyCustomException
{
private MyCustomExceptionObject myCustomExceptionObject;
// Getters, Setters, Constructors...
}
public class MyCustomExceptionObject
{
int code;
// Getters, Setters, Constructors...
}
使用Spring Boot Starter Test我可以使用许多测试库。
目前我主要使用AssertJ。我的一个测试为方法提供了无效参数,并期望出现异常。
@Test
public void test()
{
org.assertj.core.api.Assertions.assertThatThrownBy(() -> someMethod(-1)).isExactlyInstanceOf(MyCustomException.class);
}
public void someMethod(int number)
{
if (number < 0)
{
throw new MyCustomException(new MyCustomExceptionObject(12345));
}
//else do something useful
}
这很好用,但我想更具体地测试异常,测试code
是否符合预期。像这样的东西会起作用:
try
{
someMethod(-1);
}
catch (MyCustomException e)
{
if (e.getCode() == 12345)
{
return;
}
}
org.assertj.core.api.Assertions.fail("Exception not thrown");
但我宁愿寻找像单行一样的单线:
org.assertj.core.api.Assertions.assertThatThrownBy(() -> someMethod(-1)).isExactlyInstanceOf(MyCustomException.class).exceptionIs((e) -> e.getCode() == 12345);
在上面列出的任何测试库中是否存在类似的内容(AssertJ首选)?