testLogicalDoc = new LogicalDocumentImpl(-4);
assertTrue(testLogicalDoc==null);
在上面的代码中,我有一个断言条件,我想确保我不会创建负大小的对象。它是封面下面的一个stringBuilder,它抛出NegativeArrayBoundsException,大小小于零。但我的junit测试在这里失败了。我不知道是否有任何其他方法可以确保没有使用负大小创建对象。 有关如何测试它的任何想法?或者它应该是Junit测试吗?
非常感谢,
-pan
编辑:
@Test(expected=NegativeArraySizeException.class)
public void testCreate4b()
{
LogicalDocumentImpl testLogicalDoc = new LogicalDocumentImpl(-4);
}
我正在LogicalDocumentImpl类中捕获异常,但是这个测试仍然失败并出现断言错误,但只有在我尝试捕获断言错误时才成功..为什么会这样?
答案 0 :(得分:5)
如果您正在投掷NegativeArrayBoundsException
,您的测试用例可以像这样检查
@Test(expected= NegativeArrayBoundsException.class)
这意味着您的测试应抛出异常NegativeArrayBoundsException
。
或者,您可以使用fail('should never come here for negative values..')
testLogicalDoc = new LogicalDocumentImpl(-4);
fail('should never come here for negative values..');
答案 1 :(得分:1)
通常,Junit测试用例旨在测试代码在某些情况下的行为是否符合您的预期。因此,对于这种情况,您希望抛出异常。
查看JUnit常见问题解答(http://junit.sourceforge.net/doc/faq/faq.htm#tests_7),您希望使用以下内容:
@Test(expected=NegativeArrayBoundsException.class)
答案 2 :(得分:1)
Catch AssertionError,否则失败:
try {
LogicalDocumentImpl testLogicalDoc = new LogicalDocumentImpl(-4);
fail("should throw");
}
catch (AssertionError e) {
}