2016-03-30 8 views
0

私は、次のAntターゲットがあります。のAntのJUnitタスクは、テストを実行する前に失敗し

>ant run-test 
Buildfile: ...\build.xml 
    [echo] 2016-03-30 20:29:29 

run-test: 
    [junit] Exception in thread "main" java.lang.reflect.InvocationTargetException 
    [junit]  at org.apache.tools.ant.taskdefs.optional.junit.FormatterElement.createFormatter(FormatterElement.java:343) 
    [junit]  at org.apache.tools.ant.taskdefs.optional.junit.FormatterElement.createFormatter(FormatterElement.java:257) 
    [junit]  at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.transferFormatters(JUnitTestRunner.java:1085) 
    [junit]  at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1180) 
    [junit]  at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:1033) 
    [junit] Caused by: java.lang.reflect.InvocationTargetException 
    [junit]  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    [junit]  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    [junit]  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    [junit]  at java.lang.reflect.Method.invoke(Method.java:498) 
    [junit]  at org.apache.tools.ant.taskdefs.optional.junit.FormatterElement.createFormatter(FormatterElement.java:337) 
    [junit]  ... 4 more 
    [junit] Caused by: java.lang.NullPointerException 
    [junit]  at org.apache.tools.ant.taskdefs.optional.junit.FailureRecorder.setProject(FailureRecorder.java:153) 
    [junit]  ... 9 more 

BUILD FAILED 
...\build.xml:171: Using loader AntClassLoader[ 
    C:\Program Files (x86)\apache-ant-1.9.6\lib\ant-launcher.jar; 
    C:\Program Files (x86)\apache-ant-1.9.6\lib\ant.jar; 
    C:\Program Files (x86)\apache-ant-1.9.6\lib\ant-junit.jar; 
    C:\Program Files (x86)\apache-ant-1.9.6\lib\ant-junit4.jar; 
    ...\lib\commons-math3-3.5.jar; 
    ...\lib\hamcrest-core-1.3.jar; 
    ...\lib\junit-4.11.jar; 
    ...\lib\log4j-api-2.5.jar; 
    ...\lib\log4j-core-2.5.jar; 
    ...\bin\release] on class org.apache.tools.ant.taskdefs.optional.junit.FailureRecorder: 
java.lang.NoClassDefFoundError: junit/framework/TestListener 
     at java.lang.ClassLoader.defineClass1(Native Method) 
     at java.lang.ClassLoader.defineClass(ClassLoader.java:760) 
     at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
     at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) 
     at java.net.URLClassLoader.access$100(URLClassLoader.java:73) 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:368) 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:362) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:361) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
     at java.lang.ClassLoader.defineClass1(Native Method) 
     at java.lang.ClassLoader.defineClass(ClassLoader.java:760) 
     at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
     at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) 
     at java.net.URLClassLoader.access$100(URLClassLoader.java:73) 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:368) 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:362) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:361) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
     at org.apache.tools.ant.AntClassLoader.findBaseClass(AntClassLoader.java:1407) 
     at org.apache.tools.ant.AntClassLoader.loadClass(AntClassLoader.java:1085) 
     at org.apache.tools.ant.util.SplitClassLoader.loadClass(SplitClassLoader.java:58) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
     at java.lang.Class.forName0(Native Method) 
     at java.lang.Class.forName(Class.java:348) 
     at org.apache.tools.ant.taskdefs.optional.junit.FormatterElement.createFormatter(FormatterElement.java:287) 
     at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.logVmExit(JUnitTask.java:1854) 
     at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.logVmCrash(JUnitTask.java:1818) 
     at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.executeAsForked(JUnitTask.java:1295) 
     at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.execute(JUnitTask.java:1024) 
     at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.executeOrQueue(JUnitTask.java:2105) 
     at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.execute(JUnitTask.java:832) 
     at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:293) 
     at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:498) 
     at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) 
     at org.apache.tools.ant.Task.perform(Task.java:348) 
     at org.apache.tools.ant.Target.execute(Target.java:435) 
     at org.apache.tools.ant.Target.performTasks(Target.java:456) 
     at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1405) 
     at org.apache.tools.ant.Project.executeTarget(Project.java:1376) 
     at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41) 
     at org.apache.tools.ant.Project.executeTargets(Project.java:1260) 
     at org.apache.tools.ant.Main.runBuild(Main.java:853) 
     at org.apache.tools.ant.Main.startAnt(Main.java:235) 
     at org.apache.tools.ant.launch.Launcher.run(Launcher.java:285) 
     at org.apache.tools.ant.launch.Launcher.main(Launcher.java:112) 
Caused by: java.lang.ClassNotFoundException: junit.framework.TestListener 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
     ... 51 more 

Total time: 3 seconds 
:私は、私は次の出力を取得しています、コマンドラインから実行しようとすると

<path id="test-classpath"> 
    <fileset dir="lib"> 
     <include name="*.jar" /> 
    </fileset> 
    <pathelement path="bin/release" /> 
</path> 

<target name="run-test"> 
    <junit printsummary="yes" haltonfailure="yes" fork="true"> 
     <formatter type="failure"/> 
     <test name="someNamespace.someTest" /> 
     <classpath refid="test-classpath" /> 
    </junit> 
</target> 

Eclipse Mars(4.5.2)でテストが正常に実行されます。なぜこのことが起きているのか、そしてJUnitテストをどのようにして蟻を走らせることができるのか誰にも分かりますか?私はJUnit 4.11を使用しており、ant v1.9.3とv1.9.6を試しました(上記の出力はant v1.9.6から生成されました)。

EDIT

私もコメントの推奨事項につき、アリv1.8.4を使用してテストしたが、それは(jarファイルのバージョン番号以外の)結果のクラッシュには影響しません。 。

+0

[Ant、Ivy、JUnitでクラスが見つかりません - build.xmlにエラーがありますか?](http://stackoverflow.com/questions/15979391/class-not-found-with-ant-ivy-and) -junit-error-in-build-xml) – kryger

+0

@krygerこの質問に対する答えはあなたがリンクしている質問のコメントだと思うので、私はそれが重複として分類されるとは思わない。 – zode64

+0

@krygerその問題は2つの理由で私の質問に答えません。最初に、OPは[ant bug](https://bz.apache.org/bugzilla/show_bug.cgi?id=54835)を​​開いたが、そのバグはant 1.9.6でクローズされていたことを示しています。私はそのバージョンでテストしましたが、問題は残ります。第2に、私がant 1.8.4を使用しようとしても、まったく同じスタックトレース(jarファイル上の異なるバージョン番号)が生成されます。 –

答えて

0

私はついにこの問題が何かを知りました。私のJUnitタスクのクラスパスは間違っていました。テストスイートクラスの場所を含めるのを忘れてしまったからです。クラスパスを修正すると、すべてが期待通りに機能しました。それでも、これはAntまたはJUnitチームのどちらかが対処すべきバグであると感じています。 「クラスXXXを読み込めませんでした」などのメッセージは、はるかに役立っていました。

0

この質問によれば、Class not found with Ant, Ivy and JUnit - error in build.xml? - 1.9+にはバグがあり、1.8.4を試してみるべきです。

+0

残念ながら、私はant 1.8.4を使用しようとすると、同じ例外とスタックトレース(別のjarバージョン番号)を取得しています。 –

関連する問題