junit - 在 ant 中执行 Junit 测试 - noclassdeffounderror 名称错误
问题描述
我正在尝试用 ant 执行一些 junit 测试套装。
这是我的文件夹结构
- 垃圾桶
- 库
- 源代码
- 测试
- 构建.xml
首先,我编译源位置中的所有文件,然后编译测试文件夹中的 java 文件。
测试文件夹的整个结构(编译的 .class 文件)保存在 bin 文件夹中,里面看起来像这样。
bin-test-alltests | -suites - SetupSuite.class - StartSuite.class
在allTests文件夹中是在套件文件夹中的套件中使用的测试
我正在尝试启动这些套件,但我经常遇到错误:
ant junit java.lang.noclassdeffounderror 名称错误
我很确定类路径有问题,但我不知道是什么。我试图改变
<test name="SetupSuite"/>
至
<test name="SetupSuite.class"/>
我得到另一个错误:
java.lang.ClassNotFoundException:SetupSuite.class
这是我的 build.xml 文件
<project name="MyTest" basedir=".">
<!--Common properties -->
<property name="src.dirname" value="src" />
<property name="test.dirname" value="test" />
<property name="lib.dirname" value="lib" />
<property name="bin.dirname" value="bin" />
<property name="src.encoding" value="utf8" />
<property name="src.version" value="1.7" />
<property environment="env" />
<!-- Paths for MyTest -->
<property name="MyTest.dir" value="${basedir}" />
<property name="MyTest.src.dir" value="${MyTest.dir}\${src.dirname}" />
<property name="MyTest.test.dir" value="${MyTest.dir}\${test.dirname}" />
<property name="MyTest.dest.dir" value="${MyTest.dir}\${bin.dirname}" />
<property name="MyTest.lib.dir" value="${MyTest.dir}\${lib.dirname}" />
<path id="classpath">
<pathelement location="${MyTest.lib.dir}\junit.jar" />
<pathelement location="${MyTest.test.dir}\test\suites\" />
</path>
<target name="compile-MyTest-src" >
<myjavac srcdir="${MyTest.src.dir}" destdir="${MyTest.dest.dir}" classpath="{MyTest.lib.dir}\junit.jar"/>
</target>
<target name="compile-MyTest-test" depends="compile-MyTest-src">
<path id='libs'>
<fileset dir= "${MyTest.lib.dir}\" includes="**/*.jar"/>
</path>
<myjavac srcdir="${MyTest.test.dir}\" destdir="${MyTest.dest.dir}" classpathref = 'libs'/>
</target>
<target name="execute-tests" depends="compile-MyTest-src,compile-MyTest-test">
<junit printsummary="yes" haltonfailure="no" showoutput="yes">
<formatter type = "brief" usefile = "false" />
<classpath refid="classpath" />
<test name="SetupSuite"/>
</junit>
</target>
<!-- General compiler settings -->
<presetdef name="myjavac">
<javac classpathref="classpath" debug="on" includeantruntime="false" encoding="${src.encoding}" source="${src.version}" target="${src.version}" />
</presetdef>
</project>
解决方案
您需要将测试名称设置为 SetupSuite 的全名:
<test name="alltests.suites.SetupSuite"/>
推荐阅读
- jenkins - 从许多其他工作中调用一个参数化工作(又名“模板”) - 这是一种可行的方法吗?
- graph - Preventing duplicate SIMILAR relationships when using algo.similarity.jaccard on continuously updated data
- c# - 如何忽略 Visual Studio 2017 解决方案项目文件夹中的文件?
- java - 无法访问 Android Studio Firebase 中的 zzeuqclass 文件错误
- postgresql - Postgresql 从具有循环引用并且在主表中引用的外键中删除值
- python - 在导入时指定 dtype 选项或设置 low_memory=False
- coq - 组合尝试和重复会导致 Coq 中的无限循环吗?
- python-3.x - 如何为所有正在运行的 Sanic 服务器进程共享数据
- arrays - 如何检查数组中的所有值
- javascript - 级联下拉 JSON