JUnit 测试在 Ant 中失败,<junit>但通过"<exec>"任务?



我正在将我的JUnit测试自动化到我的Ant构建中。但是,我的简单测试仅在从IDE和命令行运行时通过,而在Ant的<junit>任务中失败。当我从命令行运行它时(我在技术上使用Ant <exec>任务),结果是:

clean:
compile_tests:
    [javac] Compiling 2 source files to C:MY_TEMP
junit_exec:
     [exec] JUnit version 4.10
     [exec] .
     [exec] Time: 0.004
     [exec]
     [exec] OK (1 test)
     [exec]
BUILD SUCCESSFUL
Total time: 1 second

但是当我使用<junit>任务时:

Buildfile: C:MY_TEMPbuild.xml
clean:
compile_tests:
    [javac] Compiling 2 source files to C:MY_TEMP
junit_ant:
     [echo] junit_ant started
    [junit] Test SimpleTest FAILED
BUILD SUCCESSFUL
Total time: 0 seconds

MY_TEMP的含量为junit-4.10.jarSimpleTest.javabuild.xml

我已经按照Ant junit任务文档的建议将junit-4.10.jar复制到%ANT_HOME%lib文件夹。它已经有了ant-junit.jarant-junit4.jar

我的Java版本是1.6.0_26。

我的测试是:

// YES, this is the default package
import org.junit.*;
public class SimpleTest {
    @Test
    public void mySimpleTest(){
        Assert.assertEquals(  2,  1 + 1  );
    }
}

我的Ant文件(build.xml)是:

<?xml version="1.0"?>
<project name="regression_tests" basedir=".">
    <target name="clean">
        <delete>
            <fileset dir="." includes="*.class" />
        </delete>
    </target>
    <target name="compile_tests" depends="clean">
            <javac srcdir="." destdir="." source="1.6" target="1.6" includeantruntime="false" >
            <classpath>
                <pathelement location="./junit-4.10.jar" />
            </classpath>
        </javac>
    </target>
    <target name="junit_ant" depends="compile_tests" >
        <echo message="junit_ant started" />
        <junit>
            <test name="SimpleTest" />
        </junit>
    </target>
    <target name="junit_exec" depends="compile_tests">
        <exec executable="java" dir="." >
            <arg value="-classpath" />
            <arg value=".;junit-4.10.jar" />
            <arg value="org.junit.runner.JUnitCore" />
            <arg value="SimpleTest" />
        </exec>
    </target>
</project>

如果一个测试通过了一种方式,而另一种方式失败了,那么很可能是与类路径相关的问题,比如它找不到测试类、被测试类或库。

测试输出应该有助于澄清这是否是问题所在。

具体来说,我将junit_ant任务编辑为:

        <junit>
            <classpath location="." />
            <test name="SimpleTest" />
            <formatter type="xml" />
        </junit>
        <junitreport todir=".">
            <fileset dir=".">
                <include name="TEST-*.xml" />
            </fileset>
            <report todir="." />
        </junitreport>

然后显示失败是java.lang.ClassNotFoundException: SimpleTest,所以我只是将<classpath location="." />添加到<junit>任务中,然后它工作了。

添加这行以获取更多信息:

<formatter type="brief" usefile="false"/>

相关内容

  • 没有找到相关文章

最新更新