Ant 来源和测试“;资料来源;目录-如何从测试源运行测试

Ant 来源和测试“;资料来源;目录-如何从测试源运行测试,ant,junit,Ant,Junit,我有一个Java项目,它有一个与我的项目直接相关的代码的“src”目录,还有一个“test”目录,它是针对“src”目录中的代码运行的JUnit测试。目录结构如下所示: ROOT/src/com/mycompany/decoders/qDecoder/..... ROOT/test/com/mycompany/decoders/qDecoder/..... 两个目录具有完全相同的包结构 以下是目标和相关JUnit信息: <property name="src_classes_dir"

我有一个Java项目,它有一个与我的项目直接相关的代码的“src”目录,还有一个“test”目录,它是针对“src”目录中的代码运行的JUnit测试。目录结构如下所示:

ROOT/src/com/mycompany/decoders/qDecoder/.....

ROOT/test/com/mycompany/decoders/qDecoder/.....
两个目录具有完全相同的包结构

以下是目标和相关JUnit信息:

<property name="src_classes_dir" value="./bin"/>
<property name="test_classes_dir" value="./binTest"/>

<path id="junit.classpath">
  <pathelement location="${src_classes_dir}"/>
  <pathelement location="${test_classes_dir}"/>
  <pathelement location="${CommonJarPath}/JUnit/junit.jar"/>
  <pathelement location="${CommonJarPath}/JavaMail/mailapi.jar"/>
  <pathelement location="${CommonJarPath}/JavaMail/smtp.jar"/>
  <pathelement location="${CommonJarPath}/CommonsLang3/commons-lang3.jar"/>
  <pathelement location="${CommonJarPath}/JDBC/inetsoftware/merlia/8.0.2/Merlia.jar"/>
  <pathelement location="${CommonJarPath}/JodaTime/joda-time.jar"/>
</path>

<property name="test_dir" value="./test"/>  

<target name="junit" description="Run JUnit tests" depends="compile_source, compile_test">        
  <junit fork="yes" haltonfailure="yes" haltonerror="yes" showoutput="yes">
    <formatter type="plain" usefile="no"/>
    <classpath refid="junit.classpath"/>                
    <batchtest>         
      <fileset dir="${test_dir}" />
    </batchtest>    
  </junit>
</target>

我被难住了。我做错了什么?为什么不能运行
AMCiBitsTest
测试和所有其他测试?

我已经修复了它。只要说我在构建文件中犯了一个语法错误就足够了,上面发布的内容确实有效。非常抱歉,谢谢您的提问和时间。

您能否提供ClassNotFoundException的堆栈跟踪。请尝试将
设置为
,显然您已经编译了测试类。不确定它是否解决了您的问题。您是否编译了测试代码?您必须先在测试源代码中将
*.java
编译为
*.class
,然后才能对其运行JUnit。David W.-是的,我有一个“compile\u src”和一个“compile\u test”目标,该目标依赖于此目标。@Stefan Birkner:“JUnit:[JUnit]Testsuite:com.amci.util.AMCiBitsTest[JUnit]测试运行:1,失败:0,错误:1,经过的时间:0秒[junit][junit]导致错误[junit]com.amci.util.AMCiBitsTest[junit]java.lang.ClassNotFoundException:com.amci.util.AMCiBitsTest[junit]位于java.net.URLClassLoader$1.run(URLClassLoader.java:366)[junit]位于java.net.URLClassLoader$1.run(URLClassLoader.java:355)[]位于java.net.URLClassLoader.findClass(URLClassLoader.java:354)的java.security.AccessController.doPrivileged(本机方法)[junit]
junit:
    [junit] Testsuite: com.amci.util.AMCiBitsTest
    [junit] Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0 sec
    [junit]
    [junit]     Caused an ERROR
    [junit] com.amci.util.AMCiBitsTest
    [junit] java.lang.ClassNotFoundException: com.amci.util.AMCiBitsTest
    [junit]     at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    [junit]     at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    [junit]     at java.security.AccessController.doPrivileged(Native Method)
    [junit]     at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    [junit]     at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    [junit]     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    [junit]     at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    [junit]     at java.lang.Class.forName0(Native Method)
    [junit]     at java.lang.Class.forName(Class.java:190)
    [junit]