Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ant 蚂蚁公司;协调:类路径问题_Ant_Junit_Classpath_Concordion - Fatal编程技术网

Ant 蚂蚁公司;协调:类路径问题

Ant 蚂蚁公司;协调:类路径问题,ant,junit,classpath,concordion,Ant,Junit,Classpath,Concordion,我是Ant/Concordion的新手,我的第一个问题是关于堆栈溢出的,所以希望你能温柔一点 尝试设置一个Ant任务来自动运行我的一致性验收测试,并生成一个摘要/概述/索引html页面,其中列出了哪些测试通过、失败等 我正在使用,但有一个问题,我认为我的类路径不正确 包结构是镜像的test/java/spec&test/resources/spec,作为fixture和规范之间的分隔 这是我的build.xml <?xml version="1.0" encoding="UTF-8"?&g

我是Ant/Concordion的新手,我的第一个问题是关于堆栈溢出的,所以希望你能温柔一点

尝试设置一个Ant任务来自动运行我的一致性验收测试,并生成一个摘要/概述/索引html页面,其中列出了哪些测试通过、失败等

我正在使用,但有一个问题,我认为我的类路径不正确

包结构是镜像的test/java/spec&test/resources/spec,作为fixture和规范之间的分隔

这是我的build.xml

<?xml version="1.0" encoding="UTF-8"?>
<project name="Bowling" default="run.acceptance.tests">
    <path id="dependencies">
        <fileset dir="lib" includes="concordion-ant-task-*.jar"/>
        <fileset dir="lib" includes="freemarker*.jar"/>
        <fileset dir="lib" includes="junit*.jar"/>
    </path>

    <taskdef name="junit" 
        classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTask" />
    <taskdef name="generate-test-overview"    
        classname="bad.robot.concordion.ant.GenerateTestOverviewTask" 
        classpathref="dependencies"/>

    <target name="check.dependencies"
        unless="classpath.as.supplied.by.maven">
        <!--  <fail message="Missing dependencies, run using Maven instead (*blush*) or switch to use classpathref='dependencies'"/>-->
    </target>

    <target name="generate-overview"
        depends="check.dependencies">
        <generate-test-overview 
            template="src\test\resources\spec\bowlingGame\Overview.ftl"      
            output="src\test\resources\spec\bowlingGame\Overview.html">
            <fileset dir="${basedir}\src\test\resources\spec\bowlingGame\">
                <include name="**/*.html"/>
                <exclude name="**/Overview.html" />
                <exclude name="**/BowlingGame.html" />
            </fileset>
        </generate-test-overview>
    </target>

    <echo message="${basedir}" />

    <target name="run.acceptance.tests"
        depends="generate-overview">
        <junit printsummary="on" haltonfailure="yes">
            <classpath>
                <pathelement location="${basedir}"/>
            </classpath>
            <formatter type="plain"/>
            <test name="Overview"/> <!-- corresponding java fixture, must match the overview page generated -->
        </junit>
    </target>  
</project> 
修剪后的

[junit] Implicitly adding C:\Documents and Settings\gafitzgerald\training\lib\junit-4.8.2.jar;C:\java\eclipse-helios\plugins\org.apache.ant_1.7.1.v20100518-1145\lib\ant-launcher.jar;C:\java\eclipse-helios\plugins\org.apache.ant_1.7.1.v20100518-1145\lib\ant.jar;C:\java\eclipse-helios\plugins\org.apache.ant_1.7.1.v20100518-1145\lib\ant-junit.jar to CLASSPATH
    [junit] Using CLASSPATH C:\Documents and Settings\gafitzgerald\training\Bowling;C:\Documents and Settings\gafitzgerald\training\lib\junit-4.8.2.jar;C:\java\eclipse-helios\plugins\org.apache.ant_1.7.1.v20100518-1145\lib\ant-launcher.jar;C:\java\eclipse-helios\plugins\org.apache.ant_1.7.1.v20100518-1145\lib\ant.jar;C:\java\eclipse-helios\plugins\org.apache.ant_1.7.1.v20100518-1145\lib\ant-junit.jar
    [junit] Running Overview
    [junit] Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0 sec

BUILD FAILED
C:\Documents and Settings\gafitzgerald\training\Bowling\build.xml:31: Test Overview failed
    at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.actOnTestResult(JUnitTask.java:1840)
    at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.execute(JUnitTask.java:837)
    at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.executeOrQueue(JUnitTask.java:1785)
    at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.execute(JUnitTask.java:785)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)

我重新格式化了你的Ant文件,这样更容易阅读

我注意到一些事情:

  • 您不必通过
    定义JUnit任务。
    任务是Ant的一部分。我想这就是为什么您会得到:
    [antlib:org.apache.tools.ant]无法从resource org/apache/tools/ant/antlib.xml加载定义。找不到它。
  • 您需要先编译JUnit测试,然后才能运行它们。这是做这件事的任务吗?通常,在编译JUnit测试时,应在类路径中包括:
    • 编译时使用的所有jar
    • 您构建的JUnit测试将运行的类
    • junit
      jar的位置(ant-junt.jar已经在类路径中)
  • 运行JUnit测试时进行Fork测试。我不知道为什么
    fork
    设置为false,但是JUnit测试应该被fork
  • 子实体的
    name
    参数应该是要执行的类的名称。我不认为它是概述
  • 不要在失败时停止JUnit测试。一个测试可能失败,但其他测试可能成功
[junit] Implicitly adding C:\Documents and Settings\gafitzgerald\training\lib\junit-4.8.2.jar;C:\java\eclipse-helios\plugins\org.apache.ant_1.7.1.v20100518-1145\lib\ant-launcher.jar;C:\java\eclipse-helios\plugins\org.apache.ant_1.7.1.v20100518-1145\lib\ant.jar;C:\java\eclipse-helios\plugins\org.apache.ant_1.7.1.v20100518-1145\lib\ant-junit.jar to CLASSPATH
    [junit] Using CLASSPATH C:\Documents and Settings\gafitzgerald\training\Bowling;C:\Documents and Settings\gafitzgerald\training\lib\junit-4.8.2.jar;C:\java\eclipse-helios\plugins\org.apache.ant_1.7.1.v20100518-1145\lib\ant-launcher.jar;C:\java\eclipse-helios\plugins\org.apache.ant_1.7.1.v20100518-1145\lib\ant.jar;C:\java\eclipse-helios\plugins\org.apache.ant_1.7.1.v20100518-1145\lib\ant-junit.jar
    [junit] Running Overview
    [junit] Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0 sec

BUILD FAILED
C:\Documents and Settings\gafitzgerald\training\Bowling\build.xml:31: Test Overview failed
    at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.actOnTestResult(JUnitTask.java:1840)
    at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.execute(JUnitTask.java:837)
    at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.executeOrQueue(JUnitTask.java:1785)
    at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.execute(JUnitTask.java:785)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)