蚂蚁1.9.2 + JUnit的..找不到类错误 [英] ant 1.9.2 + junit.. Class not found error

查看:145
本文介绍了蚂蚁1.9.2 + JUnit的..找不到类错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用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\null1158960870

BUILD 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆