这似乎太容易和明显,但我无法找到如何测试以下内容:
我的Java方法:
public void doSth(final Foo foo) {
assert foo != null;
..
}
我的测试:
@Test
public void testAssertion() {
doSth();
doSth(new Foo());
}
我可以用assertEquals
等测试很多东西,但是如果创建一个测试用例,如果foo != null;
上的断言给出否定的话,那么它会给出真的?
我在断言的两种情况下都进行了测试,但是我无法理解断言是否失败。
我希望我的代码测试覆盖率达到100%,并希望在此行上测试一些有意义的内容。
答案 0 :(得分:6)
assert
会抛出AssertionError。
如果要测试参数为null
时发生断言,可以使用expected
注释的@Test
参数(需要JUnit 4 +)来执行此操作:< / p>
@Test(expected = AssertionError.class)
public void testAssertion() {
doSth(null);
}
答案 1 :(得分:2)
在代码中使用assert
是一种不好的做法。
尝试使用Java 8 Objects.requireNonNull()
Java类
public void doSth(final Foo foo) {
Objects.requireNonNull(foo);
..
}
测试类
@Test(expected = NullPointerException.class)
public void testNPE() {
doSth(null);
}