ant+junit出现NoSuchMethodError的原因
运行现象:
[junit] Running com.company.test.FooTest
[junit] java.lang.NoSuchMethodError: junit.framework.TestCase.name();Ljava/lang/String;
[junit] at org.apache.tools.ant.taskdefs.optional.junit.PlainJUnitResultFormatter.startTest(PlainJUnitResultFormatter.java:188);
[junit] at junit.framework.TestResult.startTest(TestResult.java:151);
[junit] at junit.framework.TestResult.run(TestResult.java:103);
[junit] at junit.framework.TestCase.run(TestCase.java:118);
[junit] at junit.framework.TestSuite.runTest(TestSuite.java:208);
[junit] at junit.framework.TestSuite.run(TestSuite.java:203);
[junit] at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:231);
[junit] at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:409);
[junit] Exception in thread "main"
junit 3.8.1, ant 1.6.0 & 1.5.4都出现此错误
(已将junit.jar复制到ant_home/lib)
解决方法:
换junit 3.7,测试程序可以运行,但是,TestCase必须重写那个带String参数的构造器才能通过编译(在junit 3.8.1下没有这个问题,先前我们的TestCase都没有这样做)
而用junit 3.8.1的话,不管是否重写构造器,总是会出NoSuchMethodError -_-b