JUnit 测试 Java 代码断言是否失败
JUnit test if Java code assert fails
这似乎太简单明了,但我找不到如何测试以下内容:
我的Java方法:
public void doSth(final Foo foo) {
assert foo != null;
..
}
我的测试:
@Test
public void testAssertion() {
doSth();
doSth(new Foo());
}
我可以用 assertEquals
等测试很多东西,但是如果 foo != null;
上的断言给出否定,如何创建一个给出 true 的测试用例?
我现在的测试在两种断言情况下都显示为绿色,但我无法捕捉到断言是否失败。
我希望我的代码测试覆盖率达到 100%,并且想在此行测试一些有意义的东西。
assert
如果断言为假则抛出 AssertionError。
如果要测试当参数为null
时是否发生断言,可以使用@Test
注解的expected
参数来实现(需要JUnit 4+) :
@Test(expected = AssertionError.class)
public void testAssertion() {
doSth(null);
}
在您的代码中使用 assert
是一种不好的做法。
尝试使用Java 8 Objects.requireNonNull()
Java Class
public void doSth(final Foo foo) {
Objects.requireNonNull(foo);
..
}
测试Class
@Test(expected = NullPointerException.class)
public void testNPE() {
doSth(null);
}
这似乎太简单明了,但我找不到如何测试以下内容:
我的Java方法:
public void doSth(final Foo foo) {
assert foo != null;
..
}
我的测试:
@Test
public void testAssertion() {
doSth();
doSth(new Foo());
}
我可以用 assertEquals
等测试很多东西,但是如果 foo != null;
上的断言给出否定,如何创建一个给出 true 的测试用例?
我现在的测试在两种断言情况下都显示为绿色,但我无法捕捉到断言是否失败。
我希望我的代码测试覆盖率达到 100%,并且想在此行测试一些有意义的东西。
assert
如果断言为假则抛出 AssertionError。
如果要测试当参数为null
时是否发生断言,可以使用@Test
注解的expected
参数来实现(需要JUnit 4+) :
@Test(expected = AssertionError.class)
public void testAssertion() {
doSth(null);
}
在您的代码中使用 assert
是一种不好的做法。
尝试使用Java 8 Objects.requireNonNull()
Java Class
public void doSth(final Foo foo) {
Objects.requireNonNull(foo);
..
}
测试Class
@Test(expected = NullPointerException.class)
public void testNPE() {
doSth(null);
}