我正在编写一个 java 库来轻松编写一些 junit 测试。我不知道我是否必须在我的库中断言或抛出异常。这是一个例子。假设我在我的库中定义了这个函数来检查类的方法数
public void assertNumberOfMethods(Class clazz, int expectedNumberOfMethods) {
int numberOfMethods = clazz.getDeclaredMethods().length;
//TODO compare number and expected number
}
我应该
直接在我的库中断言
Assert.assertTrue(expectedNumberofMethod > 0); Assert.assertEquals(numberOfMethods,expectedNumberOfMethods); //...
抛出一个异常并让用户处理这个异常。由于此库旨在用于单元测试,因此用户将能够使用
捕获部分异常@Test(expected=SomeCustomException.class)
public void assertNumberOfMethods(Class clazz, int expectedNumberOfMethods) throws IllegalArgumentException, SomeCustomException { if(expectedNumberOfMethods <= 0) throw new IllegalArgumentException(/*...*/); int numberOfMethods = clazz.getDeclaredMethods().length; if(numberOfMethods != expectedNumberOfMethods) throw new SomeCustomException(/*...*/); }
编辑这是一个虚拟示例
最佳答案
您正计划创建专门的断言方法,就像您要为 Assert
类编写扩展一样。
为此,您应该直接抛出断言错误(变体 1),就像 Assert
中的断言方法一样,提供有用的错误消息。
在 @Test
注释中指定预期异常的可能性服务于不同的目的。有了这个注释,Junit 允许您测试一段代码是否抛出预期的异常,而无需在测试代码中捕获异常。
关于java - 我应该在 junit 库中断言还是抛出异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33955585/