【问题标题】:How do I write an ant script for parameterized jUnit test cases?如何为参数化的 jUnit 测试用例编写 ant 脚本?
【发布时间】:2013-12-17 18:43:26
【问题描述】:

我已经编写了参数化测试用例。当我通过 ant 运行它们时,我没有得到想要的结果。如果没有Parameterized,测试用例会按需要运行。请让我知道我错在哪里以及我需要做出哪些改变。

代码:

import java.util.Arrays;
import java.util.Collection;
import junit.framework.TestCase;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;

@RunWith(value = Parameterized.class)
public class HelloWorldTest extends TestCase {

    int num1;
    int num2;
    int num3;

    public HelloWorldTest(int num1, int num2, int num3) {
        super();
        this.num1 = num1;
        this.num2 = num2;
        this.num3 = num3;
    }

    @Parameters
    public static Collection<Object[]> data() {
        Object[][] data = new Object[][] { { 1, 1, 2 }, { 2, 2, 5 } };
        return Arrays.asList(data);
    }

    @Test
    public void testSummationPositive() {
        Assert.assertEquals(num1 + num2, num3);
    }

}

还有 Ant 脚本:

<?xml version="1.0" encoding="UTF-8"?>
<project name="HelloWorld" basedir="." default="main">

    <property name="src.dir" value="src" />
    <property name="test.dir" value="test" />
    <property name="build.dir" value="build" />
    <property name="classes.dir" value="${build.dir}/classes" />
    <property name="jar.dir" value="${build.dir}/jar" />

    <property name="main-class" value="HelloWorld" />

    <property name="lib.dir" value="lib" />
    <path id="classpath">
        <fileset dir="${lib.dir}" includes="**/*.jar" />
    </path>

    <path id="application" location="${jar.dir}/${ant.project.name}.jar" />

    <target name="clean">
        <delete dir="${build.dir}" />
    </target>

    <target name="compile">
        <mkdir dir="${classes.dir}" />
        <javac srcdir="${src.dir}" destdir="${classes.dir}"
            classpathref="classpath" />
    </target>

    <target name="test-compile">
        <mkdir dir="${classes.dir}" />
        <javac srcdir="${test.dir}" destdir="${classes.dir}"
            classpathref="classpath" />
    </target>

    <target name="jar" depends="compile,test-compile">
        <mkdir dir="${jar.dir}" />
        <jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${classes.dir}">
            <manifest>
                <attribute name="Main-Class" value="${main-class}" />
            </manifest>
        </jar>
    </target>

    <target name="run" depends="jar,junit">
        <java classname="${main-class}" fork="true">
            <classpath>
                <path refid="classpath" />
                <path refid="application" />
                <path location="${jar.dir}/${ant.project.name}.jar"></path>
            </classpath>
        </java>
    </target>

    <target name="junit" depends="jar">
        <junit printsummary="yes">
            <classpath>
                <path refid="classpath" />
                <path refid="application" />
            </classpath>
            <batchtest fork="yes">
                <fileset dir="${test.dir}" includes="*Test.java" />
            </batchtest>
        </junit>
    </target>

    <target name="clean-build" depends="clean,jar" />

    <target name="main" depends="clean,run" />
</project>

【问题讨论】:

  • 您遇到了什么问题?当 ant 尝试调用 JUnit 时,您会收到错误消息吗? JUnit 测试失败了吗?
  • 这里我有两个测试数据......但在构建中它只显示一个。即使是成功的场景,它的显示也会失败。

标签: ant junit parameterized


【解决方案1】:

由于您使用的是 JUnit 4,因此您不需要 extends TestCase 声明。尝试删除它,看看您的测试是否正常运行。

【讨论】:

  • Ant 的输出是什么?
  • 谢谢我犯了一个错误。删除扩展 TestCase 后它工作了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多