【发布时间】:2016-02-11 08:43:17
【问题描述】:
这似乎太简单明了,但我不知道如何测试以下内容:
我的 Java 方法:
public void doSth(final Foo foo) {
assert foo != null;
..
}
我的测试:
@Test
public void testAssertion() {
doSth();
doSth(new Foo());
}
我可以用assertEquals 等来测试很多东西,但是如果foo != null; 上的断言给出否定结果,如何创建一个给出真值的测试用例?
我现在的测试在两种断言情况下都是绿色的,但我无法捕捉到断言是否失败。
我希望我的代码测试覆盖率达到 100%,并且想在这一行测试一些有意义的东西。
【问题讨论】:
-
如果
doSth();是您的生产代码的一部分,那么使用断言是不好的做法,因为它们在默认情况下被禁用。应该重构它以使用异常。 -
你尝试过 assertNotNull(foo) 吗?
-
如果我运行给定的测试,断言现在给出“3/4 分支未覆盖”,所以我想知道是否有机会获得 4/4。除了好奇之外,这有多么有用。我将在这里介绍术语“coverageTesting”,这就是我的目标。
-
事情不完全是关于断言异常,而是测试断言命令是否被触发。也许我错过了一些东西,但是测试断言失败与测试一些异常不同。虽然不希望事情正常发生(=非常异常),但在我看来,断言和异常是不同的概念。
标签: java unit-testing junit test-coverage