Unit Testing AssertError in JUnit
我试图通过在方法的顶部添加一个断言语句来确保参数不能为null。
在单元测试时,我试图声明AssertError是预期的,但它仍然被识别为失败的测试,即使它的行为是正确的(AssertError被抛出)。
1 2 3 4 5 6 7 | class ExampleTest { @Test(expected=AssertError.class) public void testAssertFails() { assert 0 == 1; } } |
您可能需要使用
如果您在Eclipse中运行它,则可以在首选项中编辑已安装的JRE以将其添加为参数,或者将其添加到测试的运行配置中。
此外,抛出的异常是
将JVM级断言与JUnit断言混合可能不是一个好主意。 也就是说,这是在我们注释之前它是如何完成的。 您可以考虑这样做只是为了清晰/文档:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | public class Foo { public void someMethod(String someArg) { if (s == null) throw new NullPointerException("someArg cannot be null"); } } public class FooTest { public void testSomeMethodNullArg() { try { foo.someMethod(null); fail("someMethod failed to throw NullPointerException for null arg"); } catch (NullPointerException expected) { // expected exception } } |
问题是,异常类不称为AssertError,但AssertionError检出Java API Javadoc。