1

这似乎太容易和明显了,但我不知道如何测试以下内容:

我的Java方法:

public void doSth(final Foo foo) {
    assert foo != null;
    ..
}

我的测试:

 @Test
 public void testAssertion() {
      doSth();
      doSth(new Foo());
 }

我可以用 etc. 测试很多东西,但是如果那里的断言给出否定assertEquals,如何创建一个给出 true 的测试用例?foo != null;

我现在的测试在两种断言情况下都是绿色的,但我无法捕捉到断言是否失败。

我希望我的代码测试覆盖率达到 100%,并且想在这条线上测试一些有意义的东西。

4

2 回答 2

7

assert throws an AssertionError if the assertion is false.

If you want to test that an assertion occurs when the argument is null, you can do it with the expected argument of the @Test annotation (requires JUnit 4+):

@Test(expected = AssertionError.class)
public void testAssertion() {
    doSth(null);
}
于 2016-02-11T08:53:51.667 回答
2

在您的代码中使用assert是一种不好的做法。

尝试使用 Java 8Objects.requireNonNull()

Java 类

public void doSth(final Foo foo) {
    Objects.requireNonNull(foo);
    ..
}

测试班

@Test(expected = NullPointerException.class)
public void testNPE() {
     doSth(null);
}
于 2016-02-11T08:55:29.577 回答