任何人都可以告诉我这个伪代码有什么问题?

时间:2011-11-12 21:28:59

标签: java junit

我不熟悉JUnit,所以不确定这是assertTrue(b_exception);的问题,因为如果我在那里放System.out.println("something");,它会打印出“某些东西”......谢谢!!

请注意它是伪代码,专注于逻辑。

b_exception = false;
try{
   somethingThrowError();
}catch(Error e){
   b_exception =  true;
}
assertTrue(b_exception);

3 个答案:

答案 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)

不确定您认为该代码有什么问题 始终会执行assertTrueSystem.out.println也会执行。{。} 如果参数不是assertTrue,则true - 将发出错误信号;如果参数为true,则表示“通过测试”。
也许您应该使用System.out.println("b_exception = " + b_exception);来查看正在发生的事情。