使用try catch语句打印出语句

时间:2017-10-06 07:42:38

标签: java junit

@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测试所需的总时间?

2 个答案:

答案 0 :(得分:5)

此代码没有意义。

  • 如果没有抛出异常,则不会抛出任何异常,因此您不会在catch块中结束;因此,在“成功”的情况下,你没有办法在那里结束(除非你明确测试抛出getMessage()返回null的异常,这是......嗯;在这种情况下,您应该fail()作为try)的最后一行
  • JUnit已为您处理故障。如果您的方法是“正确”的方法,那么您必须将此代码放在每个测试用例中。重复了多少代码。
  • 如果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());
    }
}