@Test
public void test() throws Exception
{
try
{
//some code over here
}
catch(Exception e)
{
if(e.toString() == null)
{
System.out.print("Test Case: Successful");
}
else
{
System.out.println("Test Case: Failed");
System.out.println("Failing Reason: "+ e.toString());
}
}
}
目前我有上面的代码。 但是,在执行JUnit时。 没有任何东西被打印到控制台。
我做错了什么吗?或者是我不能在JUnit中使用System.out.println。
所以我有第二个问题: 是否可以打印出完成JUnit测试所需的总时间?
答案 0 :(得分:5)
此代码没有意义。
catch
块中结束;因此,在“成功”的情况下,你没有办法在那里结束(除非你明确测试抛出getMessage()
返回null
的异常,这是......嗯;在这种情况下,您应该fail()
作为try
)的最后一行try
块中的代码因抛出Exception
而失败,则会抓住并吞下问题。当然,它被打印到控制台,但JUnit无法捕获它,所以看起来测试通过了。 (如果抛出Error
或其他Throwable
,它仍将无法正常运行。简而言之:只需删除try
/ catch
块,将代码保留在try
中,让测试框架完全按照设计目标执行。
答案 1 :(得分:1)
catch
块中的代码仅在try
块中的代码抛出异常时才会运行。正如您所编写的那样,除非抛出异常,否则它不会打印任何内容。这很可能是你的意思:
@Test
public void test() throws Exception
{
try
{
//some code over here
// last line of try block
System.out.print("Test Case: Successful");
}
catch(Exception e)
{
System.out.println("Test Case: Failed");
System.out.println("Failing Reason: "+ e.toString());
}
}