如何使用PowerMockito捕获/抛出异常

时间:2017-06-08 17:46:06

标签: java junit

我正在为一个不会抛出异常的方法编写~/.local/share/jupyter/kernels/ 测试用例,但是这个方法会调用抛出JUnit的{​​{1}}方法,我需要抓住它。我创建了一个测试用例,我传递了无效的日期格式,在调试过程中,它进入了parse方法,然后进入catch块但是如何在测试用例中显式抛出parse()然后比较登录。希望我很清楚。

正在测试的方法。

ParseException

JUnit的

ParseException

除了上面的测试用例,我想使用PowerMockito显式抛出public static String convertUTC( String strDate, String inputFormat, String outputFormat ) { String displayDateString = null; try { DateFormat inFormat = new SimpleDateFormat( inputFormat ); inFormat.setTimeZone( TimeZone.getTimeZone( "UTC" ) ); Date date = inFormat.parse( strDate ); DateFormat outFormat = new SimpleDateFormat( outputFormat ); outFormat.setTimeZone( TimeZone.getDefault() ); displayDateString = formatDate(date, outputFormat); } catch ( ParseException pe ) { log.error( "DateUtil.convertUTC :Parse exception while parsing,"+strDate+" using format :"+inputFormat) ; } return displayDateString; } 并在日志中执行断言来比较文本。我不能这样做的原因是因为converUTC不会抛出ParseException。

我认为这会引发异常,但我如何比较日志中的文本?

@Test
public void testConvertUTCParseException() {
    String incomingDate = "2012-08-15T22:56:02.038Z";
    String inputFormat = "MM/dd/yy hh:mm a z";
    String outputFormat = "MM/dd/yy hh:mm a z";

    assertEquals( null, DateUtils.convertUTC( incomingDate, inputFormat, outputFormat ) );
}

感谢。

1 个答案:

答案 0 :(得分:1)

老实说你的测试用例

public void testCaughtParseException() throws Exception

在这里没有多大意义,因为我们已经尝试过这里了。 如果从方法中抛出parseException,则编写这样的测试用例是有意义的。 在您的情况下,我想要检查是否在日期不正确的情况下调用了log.error。

所以,我建议你使用Mockito的验证。 这对你的测试用例来说已经足够了。