我不熟悉JUnit,所以不确定这是assertTrue(b_exception);
的问题,因为如果我在那里放System.out.println("something");
,它会打印出“某些东西”......谢谢!!
请注意它是伪代码,专注于逻辑。
b_exception = false;
try{
somethingThrowError();
}catch(Error e){
b_exception = true;
}
assertTrue(b_exception);
答案 0 :(得分:2)
我不知道你的代码有什么问题,因为你还没有说明它是如何不能满足你的期望的,但是测试引发异常的正确习惯是使用JUnit 4的注释:
@Test(expected=SpecificError.class)
public void testError(){
somethingThrowError();
}
答案 1 :(得分:2)
我只能猜测你正在寻找这个:
try{
somethingThrowError();
fail("Exception expected");
}catch(AsSpecificAsPossibleException e){
//should happen, OK
//optionally assert exception message, etc.
}
另请注意,抓住Error
是一个坏主意,请尽可能使用特定的例外。
更新: @Michael Borgwardt的答案实际上甚至更好,但只有在你的测试中除了一行之外什么都没有(没有别的东西可以抛出)。另外@Test(expected
不允许你执行额外的异常消息断言(但是你应该吗?)
答案 2 :(得分:1)
不确定您认为该代码有什么问题
始终会执行assertTrue
,System.out.println
也会执行。{。}
如果参数不是assertTrue
,则true
- 将发出错误信号;如果参数为true
,则表示“通过测试”。
也许您应该使用System.out.println("b_exception = " + b_exception);
来查看正在发生的事情。