JUnit java.lang.NoSuchMethodError:junit.framework.ComparisonFailure.getExpected()Ljava / lang / String - 代码日志

JUnit java.lang.NoSuchMethodError:junit.framework.ComparisonFailure.getExpected()Ljava / lang / String

我从以前运行成功的测试用例中得到以下异常,但现在它抛出了这个异常:

java.lang.NoSuchMethodError: junit.framework.ComparisonFailure.getExpected()Ljava/lang/String;
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestListener.testFailure(JUnit4TestListener.java:63)
    at org.junit.runner.notification.RunNotifier$4.notifyListener(RunNotifier.java:100)
    at org.junit.runner.notification.RunNotifier$SafeNotifier.run(RunNotifier.java:41)
    at org.junit.runner.notification.RunNotifier.fireTestFailure(RunNotifier.java:97)
    at org.junit.internal.runners.JUnit38ClassRunner$OldTestClassAdaptingListener.addError(JUnit38ClassRunner.java:41)
    at org.junit.internal.runners.JUnit38ClassRunner$OldTestClassAdaptingListener.addFailure(JUnit38ClassRunner.java:64)
    at junit.framework.TestResult.addFailure(TestResult.java:46)
    at junit.framework.TestResult.runProtected(TestResult.java:127)
    at junit.framework.TestResult.run(TestResult.java:109)
    at junit.framework.TestCase.run(TestCase.java:118)
    at junit.framework.TestSuite.runTest(TestSuite.java:208)
    at junit.framework.TestSuite.run(TestSuite.java:203)
    at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

任何人都知道是什么原因造成的?这似乎是JUnit赛跑者的内部问题。

junit.framework.ComparisonFailure上的getExpected()方法只添加在JUnit 3.8.2中(记住,junit.framework包来自JUnit 3.8,而JUnit 4使用org.junit)。该方法不在3.8.1,这是最常见的3.x版本仍然在那里。

我认为该方法被添加到更容易的迁移到JUnit 4工具,偶尔这个异常弹出使用JUnit 3.8的旧代码库。当运行JUnit 3.8测试时,Eclipse JUnit 4测试运行程序将显示为切换回调用junit.framework. *代码。

所以我猜你还有JUnit 3.8.1潜伏在你的类路径上,它与Eclipse测试运行程序冲突。要么摆脱那个JAR,要么把它升级到3.8.2。

http://stackoverflow.com/questions/4019016/junit-java-lang-nosuchmethoderror-junit-framework-comparisonfailure-getexpected

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:JUnit java.lang.NoSuchMethodError:junit.framework.ComparisonFailure.getExpected()Ljava / lang / String