junit4.9b需要jdk1.6及以上版本支持
升级Junit版本至junit4.9b后,运行测试用例时,出错了,错误信息如下:
?
java.lang.NoSuchMethodError: java.lang.String.isEmpty()Zat junit.framework.Assert.format(Assert.java:292)at junit.framework.ComparisonCompactor.compact(ComparisonCompactor.java:29)at junit.framework.ComparisonFailure.getMessage(ComparisonFailure.java:35)at java.lang.Throwable.getLocalizedMessage(Unknown Source)at java.lang.Throwable.toString(Unknown Source)at java.lang.String.valueOf(Unknown Source)at java.io.PrintWriter.print(Unknown Source)at java.io.PrintWriter.println(Unknown Source)at java.lang.Throwable.printStackTrace(Unknown Source)
?由错误信息可以看出,是String类没有isEmpty()的异常,经查询验证,原来isEmpty()是jdk1.6中新增的方法,笔者本地是jdk1.5的环境,故而抛出此错误。
查看junit的Assert.java的第292行代码( if ((message != null) && (!message.isEmpty()))
),如下:
public static String format(String message, Object expected, Object actual) { String formatted = ""; if ((message != null) && (!message.isEmpty())) formatted = message + " "; return formatted + "expected:<" + expected + "> but was:<" + actual + ">"; }}
?在Assert的format方法中,使用了String类的isEmpty()方法。
?
最终解决方法:
更换本地junit版本为4.8,问题解决。