我们迁移到两个JUnit4和蚂蚁1.7

测试运行现在日食,但注释忽略时运行测试使用蚂蚁。

根据蚂蚁junit任务 文档:

它还与JUnit4.0,包括"纯粹的"JUnit4测试,仅使用注释并没有JUnit4TestAdapter.

但本文件不阐述应如何配置。

是否有任何特殊的设置所需要的junit的任务?我失去了一些东西?我们有两个测试延伸的测试用例(即3.8式)和"纯粹的"Junit4测试,可能这就是问题吗?

有帮助吗?

解决方案

我使用纯JUnit4测试用Ant。

下面是我的构建文件的有趣的部分:

<junit printsummary="yes" haltonfailure="yes">
    <formatter type="xml"/>
    <classpath refid="path.test"/>
    <batchtest fork="yes" todir="${dir.report.unittests.xml}">
        <fileset dir="src">
            <include name="**/*Test*.java"/>
        </fileset>
    </batchtest>
</junit>

请确保您有蚂蚁的lib目录中的最新版本的junit.jar文件。据我所知,所需要的版本与蚂蚁1.7或更高版本的交付...

其他提示

蚂蚁船只与一个版本的JUnit3默认。JUnit3没有支持对于测试的注释。

使用JUnit4的注释从junit的任务,确保提供位置的一JUnit4罐子在一套类路径元的junit的任务(见 这项中的常见问题的蚂蚁).

<junit showoutput="yes" fork="true">
    <classpath>
        <!-- The location of the JUnit version that you want to use -->
        <pathelement location="lib/junit-4.9b1.jar"/>
    </classpath>

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

    <batchtest>
        <fileset dir="${tests.dir}"/>
    </batchtest>
</junit>

这是一个较好的解决方案复盖的ant-junit.jar 在ANT_HOME/lib,因为它意味着你可以保持你的JUnit罐源的控制代码一同作出升级为以后的版本明了。

请注意,虽然我还没有指定任何包括模式在我的文件集上述这并不意味着junit任务将尝试运行JUnit对所有类在该目录的结构,可能会导致一些课程被包括在内,不含有任何测试,这取决于你如何有结构化的源文件。

您终于可以只找与在 skipNonTests执行测试参数蚂蚁1.9.3+加入!

这是从上方接受的答案的代码片段(除了新的 skipNonTests在文件名要求参数和摆脱“测试”的):

<junit printsummary="yes" haltonfailure="yes">
    <formatter type="xml"/>
    <classpath refid="path.test"/>
    <batchtest skipNonTests="true" fork="yes" todir="${dir.report.unittests.xml}">
        <fileset dir="src">
            <include name="**/*.java"/>
        </fileset>
    </batchtest>
</junit>

这发生在我,这是因为我是使用注释和延伸测试用例两者。

public class TestXXX extends TestCase {

    @Test
    public void testSimpleValidCase() {
        // this was running
    }

    @Test
    public void simpleValidCase() {
        // this wasn't running
    }
}

在扩展TestCase你正在承担JUnit3样式,以便JUnit4注解都被忽略。

的解决方案是停止延伸测试用例。

验证您的类路径定义... 这解决了问题。

<path id="classpath" description="Classpath do Projeto">
    <fileset dir="${LIB}">
        <include name="**/*.jar" />
        <exclude name="**/.SVN/*.*"/>
    </fileset>
</path>

这是我的通用ant脚本中的相关部分...不知道这会帮助你或不..

 <junit fork="true"
        forkmode="once"
        haltonfailure="false"
        haltonerror="false"
        failureproperty="tests.failures"
        errorproperty="tests.errors"
        includeantruntime="true"
        showoutput="true"
        printsummary="true">
     <classpath>
         <path refid="path-id.test.classpath.run"/>
     </classpath>

     <formatter type="xml"/>

     <batchtest fork="yes"
                todir="${dir.build.testresults}">
         <fileset dir="${dir.src.tests}">
             <include name="**/*Test.java"/>
         </fileset>
     </batchtest>
 </junit>

将此注释应用于其他类org.junit.Ignore

我还试图用JUnit 4.0无JUnit4TestAdapter中,即,做测试,没有方法,点击     公共静态junit.framework.Test套件(){         返回新JUnit4TestAdapter中(SomeTestClass.class);     }

我使用蚂蚁1.9.4。 冗长运行ant测试(蚂蚁-v)所示

  

[junit的]运行在同一VM结果,多个测试     [junit的]加入隐/usr/share/java/junit.jar:/usr/sharejava/ant-launcher.jar:/usr/share/java/ant.jar:/usr/share/java/ant/ant-junit .JAR到CLASSPATH

啊哈,但仍有一些蚂蚁的junit任务。 下载这说明除 /usr/share/java/ant/ant-junit4.jar这是不隐式添加。 我刚添加它明确地:

<junit printsummary="yes" 
    fork="yes" 
    forkmode="once"
    maxmemory="1023m" 
    showoutput="no">
    ...
   <classpath>
     <pathelement path="...:${junitJar}:${hamcrestJar}:/usr/share/java/ant/ant-junit4.jar" />
   </classpath>
...
</junit>

和它的工作。无:无。 我知道,这个解决方案是不漂亮在所有...

我最终什么事做了添加一只蚂蚁所使用的任务>我的定义之一。等瞧。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top