论坛首页 Java版

ant+junit发生NoSuchMethodError,请教原因

浏览 3451 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
时间:2003-12-29
ant script:
[code:1]
<target name="run-tests" depends="test-compile">
<junit printsummary="yes" haltonfailure="no">
<classpath>
<pathelement location="${weblogic.home}/lib/weblogic.jar"/>
<pathelement location="${lib.dir}/commons-logging.jar"/>
<pathelement path=""/>
</classpath>

<formatter type="plain"/>

<batchtest fork="yes" todir="${basedir}/test-output">
<fileset dir="${src.dir}">
<include name="com/company/**/test/*.java"/>
</fileset>
</batchtest>
</junit>
</target>
[/code:1]

运行现象:[code:1] [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"[/code:1]

junit 3.8.1, ant 1.6.0 & 1.5.4都出现此错误
(已将junit.jar复制到ant_home/lib)
   
时间:2003-12-29
junit.jar要加到CLASSPATH的,这个比较特殊
   
0 请登录后投票
时间:2003-12-29
删除ant_home\lib\junit.jar;加junit.jar到系统的CLASSPATH
但是,还是不行,错误依旧。
   
0 请登录后投票
时间:2003-12-29
看样子是 Ant 的 optional 包与 JUnit 版本不匹配,换一个老一些的 junit.jar(比如 Eclipse 中带的)试一下。
   
0 请登录后投票
时间:2003-12-29
多谢dlee! 我会试一下
   
0 请登录后投票
时间:2003-12-30
终于有结果了

换junit 3.7,测试程序可以运行,但是,TestCase必须重写那个带String参数的构造器才能通过编译(在junit 3.8.1下没有这个问题,先前我们的TestCase都没有这样做)

而用junit 3.8.1的话,不管是否重写构造器,总是会出NoSuchMethodError -_-b

很想知道dlee、wangzy是用的那个版本的junit和ant,这么古怪的问题竟然被我撞到,被折腾的好苦啊!
   
0 请登录后投票
时间:2003-12-30
muziq 写道
很想知道dlee、wangzy是用的那个版本的junit和ant,这么古怪的问题竟然被我撞到,被折腾的好苦啊!

我直接用 Eclipse 自带的。他们测试过,在一起用肯定没问题。
   
0 请登录后投票
时间:2003-12-30
Eclipse自带的junit就是3.8.1的,昨天拿出来试了一下,一样出错。
   
0 请登录后投票
时间:2003-12-30
Eclipse 中做单元测试是不依赖 Ant 的,他们可能没有测试过。单元测试可以直接在 Eclipse 中运行 TestSuite 或者在命令行使用 Ant 运行。Eclipse 中做自动测试的插件早就有了,可能比直接用 Ant 运行更方便。不过目前用 Ant 运行已经足够了。
   
0 请登录后投票
时间:2003-12-30
是啊!先前我们都是用IDEA的插件运行单元测试的,这几天正打算拿ant做集成测试,自动checkout、编译、部署、测试,最后自动把测试报告发email出去,现在已经都可以走的通了,邮箱里的测试报告很漂亮(看到它的时候真的很有满足感:)),只是已有的测试类必须全部加一遍构造器,这个比较烦!
   
0 请登录后投票
论坛首页 Java版

跳转论坛:
JavaEye推荐