蚂蚁1.9.2 + JUnit的..找不到类错误 [英] ant 1.9.2 + junit.. Class not found error
问题描述
我使用JDK 1.7,日食4.2.2,4.8.1的JUnit,蚂蚁1.9.2,windows8的64位**当我跑我的build.xml,各项指标运行良好,但与名称目标为<强>运行没有运行正常。
的build.xml
&LT;?XML版本=1.0编码=UTF-8&GT?;
&LT;,项目名称=AntExample默认值=setclasspathBASEDIR =&GT;
&LT;! - 属性初始化 - &GT;
&LT;物业环境=ENV/&GT;
&LT;属性名=ws.home值=$ {} BASEDIR/&GT;
&LT;属性名=ws.jar值=$ {} BASEDIR / lib目录/&GT;
&LT;属性名=test.dest值=$ {BASEDIR} /打造/&GT;
&LT;属性名=test.src值=$ {} BASEDIR / src目录/&GT;
&LT;属性名=test.reportsDirVALUE =E:\\报告/&GT; &LT;! - 路径初始化 - &GT;
&所述;路径ID =testcase.path&GT;
&LT; pathelement位置=$ {} ws.jar/&GT;
&LT; pathelement PATH =$ {}班/&GT;
&LT;文件集DIR =$ {} ws.jar&GT;
&LT;包括姓名=** / *罐子。/&GT;
&LT; /文件集&GT;
&LT; /路径&GT; &所述;! - 目标Setclasspath - &GT;
&lt;目标名称=setclasspath除非=testcase.path&GT;
&所述;路径ID =classpath_jars&GT;
&LT;文件集DIR =$ {} ws.jar&GT;
&LT;包括姓名=** / *罐子。/&GT;
&LT; /文件集&GT;
&LT; /路径&GT;
&所述; pathconvert pathsep =;财产=testcase.pathREFID =classpath_jars/&GT;
&LT; /目标与GT; &LT;! - 目标初始化 - &GT;
&lt;目标名称=初始化取决于=setclasspath&GT;
&lt;条件属性=蚁族
值=$ {} env.ANT_HOME /bin/ant.bat
否则=$ {} env.ANT_HOME /斌/蚂蚁&GT;
&LT;操作系统系列=窗口/&GT;
&LT; /条件&gt;
&LT; /目标与GT; &LT;! - 目标干净 - &GT;
&lt;目标名称=干净&GT;
&LT;删除DIR =$ {} test.dest/&GT;
&LT; /目标与GT; &LT;! - 目标编译 - &GT;
&lt;目标名称=编译取决于=的init,干净&GT;
&LT;删除includeemptydirs =真正的安静=真&GT;
&LT;文件集DIR =$ {} test.dest&GT;
&LT;包括姓名=** / */&GT;
&LT; /文件集&GT;
&LT; /删除&GT;
&LT; MKDIR DIR =$ {} test.dest/&GT;
&LT; javac的调试=真
DESTDIR =$ {} test.dest
SRCDIR =$ {} test.src
目标=1.7
CLASSPATH =$ {} testcase.path/&GT;
&LT; /目标与GT; &LT;! - 目标运行 - &GT;
&lt;目标名称=运行&GT;
&LT;删除includeemptydirs =真正的安静=真&GT;
&LT;文件集DIR =$ {} test.reportsDir&GT;
&LT;包括姓名=** / */&GT;
&LT; /文件集&GT;
&LT; /删除&GT;
&LT; MKDIR DIR =$ {} test.reportsDir/&GT;
&LT; Java的罐子=$ {} ws.jar叉=是重生=YES/&GT;
&LT; JUnit的叉=YEShaltonfailure =NOprintsummary =YES&GT;
&LT;类路径REFID =testcase.path/&GT;
&LT; batchtest todir =$ {} test.reportsDir叉=真&GT;
&LT;文件集DIR =$ {} test.dest&GT;
&LT;包括姓名=anttestcase / Login.class/&GT;
&LT; /文件集&GT;
&LT; / batchtest&GT;
&LT;格式化类型=XML/&GT;
&LT; / JUnit的&GT; &LT; junitreport todir =$ {} test.reportsDir&GT;
&LT;文件集DIR =$ {} test.reportsDir&GT;
&LT;包括姓名=试验 - * XML。/&GT;
&LT; /文件集&GT;
&LT;报告todir =$ {} test.reportsDir/&GT;
&LT; / junitreport&GT;
&LT; /目标与GT;
&LT; /项目&GT;`
当我与命令提示符下运行我的身材,我收到以下错误:
C:\\用户\\阿希什·拉托雷\\工作区\\ AntExample&GT;蚂蚁运行
构建文件:C:\\用户\\阿希什·拉托雷\\工作区\\ AntExample \\ build.xml文件
运行:
[JUnit的]警告:路径检测到的JUnit [的junit]蚂蚁的多个版本结果
jar:file:/H:/ant1.9/apache-ant-1.9.2-bin/apache-ant-1.9.2/lib/ant.jar!/org/apache/tools/ant/Project.class
[JUnit的]和
jar:file:/C:/Users/Ashish%20Rathore/workspace/AntExample/lib/ant.jar!/org/apache/tools/ant/Project.class
[JUnit的]运行anttestcase.Login [JUnit的]测试运行:1,失败:0,
错误:1,跳过:0,经过时间:0秒[JUnit的]测试
anttestcase.Login失败[junitreport]处理
E:\\ Reports \\内测试 - TestSuites.xml到C:\\用户\\ ASHISH〜1 \\鸭
pData所\\本地的\\ Temp \\ null1158960870 [junitreport]加载样式表
瓶子:文件:/ H:/ant1.9/apache-ant-1.9.2-bin/apache
-ant-1.9.2 / lib目录/蚂蚁的junit.jar!/组织/阿帕奇/工具/蚂蚁/任务定义/可选/ JUnit的/ XSL / J
单位frames.xsl [junitreport]转换时间:1223ms [junitreport]
删除C:\\用户\\ ASHISH〜1 \\应用程序数据\\本地的\\ Temp \\ null1158960870
生成成功总时间:5秒
块引用>在我的报告中TEST-anttestcase.Login.xml错误消息
错误类型=抛出java.lang.ClassNotFoundException消息=anttestcase.Login&GT;
抛出java.lang.ClassNotFoundException:anttestcase.Login在
java.net.URLClassLoader的$ 1.run(URLClassLoader.java:366)在
java.net.URLClassLoader的$ 1.run(URLClassLoader.java:355)在
java.security.AccessController.doPrivileged(本机方法)的
java.net.URLClassLoader.findClass(URLClassLoader.java:354)在
java.lang.ClassLoader.loadClass(ClassLoader.java:423)在
sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:308)在
java.lang.ClassLoader.loadClass(ClassLoader.java:356)在
java.lang.Class.forName0(本机方法)的
java.lang.Class.forName(Class.java:188)我Login.java测试用例
包anttestcase;进口junit.framework.Assert;
进口org.junit.AfterClass;
进口org.junit.BeforeClass;
进口org.junit.Rule;
进口org.junit.Test;
进口org.junit.rules.ErrorCollector;公共类登录{
@rule公共ErrorCollector errCollector =新ErrorCollector(); @BeforeClass公共静态无效设置()抛出异常{
的System.out.println(打开URL);
} @AfterClass公共静态无效拆解()抛出异常{
} @测试公共无效enterCredentials(){
尝试{
Assert.assertEquals(A,B);
的System.out.println(输入用户名和密码);
}赶上(的Throwable t)的{
errCollector.addError(T);
的System.out.println(捕获);
}
} @测试公共无效authenticityCheck(){
的System.out.println(登录成功);
}
}
解决方案您必须添加编译的类的junit任务的类路径。
&LT; JUnit的叉=YEShaltonfailure =NOprintsummary =YES&GT;
&LT;&类路径GT;
&LT;路径REFID =testcase.path&GT;
&LT; pathelement位置=$ {} test.dest/&GT;
&LT; /类路径&GT;
&LT; batchtest todir =$ {} test.reportsDir叉=真&GT;
&LT;文件集DIR =$ {} test.dest&GT;
&LT;包括姓名=anttestcase / Login.class/&GT;
&LT; /文件集&GT;
&LT; / batchtest&GT;
&LT;格式化类型=XML/&GT;
&LT; / JUnit的&GT;在Github上有一个例子Ant项目,它使用JUnit的: https://开头github上。 COM / mplacona / Java的JUnit的模板项目看一看它的
的build.xml
。I am using JDK 1.7, eclipse 4.2.2, JUnit 4.8.1, ant 1.9.2, windows8 64 bit** When I am running my build.xml, all targets run fine but the target with name as run is not running fine.
build.xml
<?xml version="1.0" encoding="UTF-8"?> <project name="AntExample" default="setclasspath" basedir="."> <!-- Properties Initialization --> <property environment="env"/> <property name="ws.home" value="${basedir}" /> <property name="ws.jar" value="${basedir}/lib" /> <property name="test.dest" value="${basedir}/build" /> <property name="test.src" value="${basedir}/src" /> <property name="test.reportsDir" value="E:\Reports" /> <!-- Path Initialization --> <path id="testcase.path"> <pathelement location="${ws.jar}"/> <pathelement path="${classes}"/> <fileset dir="${ws.jar}"> <include name="**/*.jar"/> </fileset> </path> <!-- Target Setclasspath --> <target name="setclasspath" unless="testcase.path"> <path id="classpath_jars"> <fileset dir="${ws.jar}"> <include name="**/*.jar"/> </fileset> </path> <pathconvert pathsep=";" property="testcase.path" refid="classpath_jars"/> </target> <!-- Target init --> <target name="init" depends="setclasspath"> <condition property="ANT" value="${env.ANT_HOME}/bin/ant.bat" else="${env.ANT_HOME}/bin/ant"> <os family="windows"/> </condition> </target> <!-- Target clean --> <target name="clean"> <delete dir="${test.dest}"/> </target> <!-- Target compile --> <target name="compile" depends="init,clean"> <delete includeemptydirs="true" quiet="true"> <fileset dir="${test.dest}"> <include name="**/*"/> </fileset> </delete> <mkdir dir="${test.dest}"/> <javac debug="true" destdir="${test.dest}" srcdir="${test.src}" target="1.7" classpath="${testcase.path}"/> </target> <!-- Target run --> <target name="run" > <delete includeemptydirs="true" quiet="true"> <fileset dir="${test.reportsDir}"> <include name="**/*"/> </fileset> </delete> <mkdir dir="${test.reportsDir}"/> <java jar="${ws.jar}" fork="yes" spawn="yes"/> <junit fork="yes" haltonfailure="no" printsummary="yes" > <classpath refid="testcase.path" /> <batchtest todir="${test.reportsDir}" fork="true"> <fileset dir="${test.dest}"> <include name="anttestcase/Login.class"/> </fileset> </batchtest> <formatter type="xml"/> </junit> <junitreport todir="${test.reportsDir}"> <fileset dir="${test.reportsDir}"> <include name="TESTS-*.xml"/> </fileset> <report todir="${test.reportsDir}"/> </junitreport> </target> </project>`
When I am running my build with command prompt, i am getting the below error:
C:\Users\Ashish Rathore\workspace\AntExample>ant run
Buildfile: C:\Users\Ashish Rathore\workspace\AntExample\build.xml
run: [junit] WARNING: multiple versions of ant detected in path for junit [junit]
jar:file:/H:/ant1.9/apache-ant-1.9.2-bin/apache-ant-1.9.2/lib/ant.jar!/org/apache/tools/ant/Project.class [junit]and jar:file:/C:/Users/Ashish%20Rathore/workspace/AntExample/lib/ant.jar!/org/apache/tools/ant/Project.class [junit]Running anttestcase.Login [junit]Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0 sec [junit] Test anttestcase.Login FAILED [junitreport] Processing E:\Reports\TESTS-TestSuites.xml to C:\Users\ASHISH~1\Ap pData\Local\Temp\null1158960870 [junitreport] Loading stylesheet jar:file:/H:/ant1.9/apache-ant-1.9.2-bin/apache -ant-1.9.2/lib/ant-junit.jar!/org/apache/tools/ant/taskdefs/optional/junit/xsl/j unit-frames.xsl [junitreport] Transform time: 1223ms [junitreport] Deleting: C:\Users\ASHISH~1\AppData\Local\Temp\null1158960870BUILD SUCCESSFUL Total time: 5 seconds
Error message in TEST-anttestcase.Login.xml in my Reports
error type="java.lang.ClassNotFoundException" message="anttestcase.Login"> java.lang.ClassNotFoundException: anttestcase.Login at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:423) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:356) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:188)
My Login.java test case
package anttestcase; import junit.framework.Assert; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ErrorCollector; public class Login { @Rule public ErrorCollector errCollector=new ErrorCollector(); @BeforeClass public static void setUp() throws Exception { System.out.println("opening Url"); } @AfterClass public static void tearDown() throws Exception { } @Test public void enterCredentials() { try { Assert.assertEquals("A", "B"); System.out.println("Enter Username and Password"); } catch(Throwable t) { errCollector.addError(t); System.out.println("Caught"); } } @Test public void authenticityCheck() { System.out.println("Login Successfully"); } }
解决方案You must add the compiled classes to the class path of the junit task.
<junit fork="yes" haltonfailure="no" printsummary="yes" > <classpath> <path refid="testcase.path"> <pathelement location="${test.dest}"/> </classpath> <batchtest todir="${test.reportsDir}" fork="true"> <fileset dir="${test.dest}"> <include name="anttestcase/Login.class"/> </fileset> </batchtest> <formatter type="xml"/> </junit>
On Github there's an example ant project, which uses JUnit: https://github.com/mplacona/java-junit-template-project Have a look at it's
build.xml
.这篇关于蚂蚁1.9.2 + JUnit的..找不到类错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!