通过Ant运行Junit似乎没有使用自定义类运行器



我有一个定制的运行程序,它通过套接字连接将Junit测试发送到运行在其他硬件上的Junit服务器。测试使用以下目标按预期运行:

    <target name="run">
        <mkdir dir="reports" />
        <junit fork="yes" haltonfailure="no">
            <test name="${CurrentTest}" />
            <formatter type="xml" />
            <classpath refid="mastersuite.classpath" />
        </junit>
        <junitreport todir="${JunitReport.dir}">
            <fileset dir=".">
                <include name="TEST-*.xml" />           
            </fileset>
            <report todir="${JunitReport.dir}" />
        </junitreport>
    </target>

但是,当我在下面添加元素…

<target name="run">
    <delete dir="reports" failonerror="false" />        
    <!-- Make the reports directory -->
    <mkdir dir="reports" />
    <!-- Execute the tests and saves the results to XML -->
    <junit fork="yes" printsummary="no" haltonfailure="no">
        <batchtest fork="yes" todir="${JunitReport.dir}">
            <fileset dir="${APITesting.classes}">
                <include name="test/api/**/*Test.class" />
            </fileset>
        </batchtest>
        <formatter type="xml" />
        <classpath refid="mastersuite.classpath" />
    </junit>
    <!-- Compile the resulting XML file into an HTML based report. -->
    <junitreport todir="${JunitReport.dir}">
        <fileset dir="${JunitReport.dir}">
            <include name="TEST-*.xml" />
        </fileset>
        <report todir="${JunitReport.dir}" />
    </junitreport>
</target>

没有任何东西被传送到硬件,这使我相信我的@RunWith(com.company.name. remotetestcaserrun .class)注释在上下文中没有得到尊重。是否有我忘记做的事情,或者也许必须另外做我的@RunWith注释被调用?

测试仍在运行并创建报告,某些不依赖于平台的测试确实运行并通过,只是不需要与目标硬件上的服务通信的测试。

UPDATE我已经确定,当使用@RunWith(Suite.class)与@ suiteclass({})配对时,这可以正常工作,而不是如果我显式地给它一个测试用例。所以现在我真的不确定问题出在哪里。

UPDATE虽然我在这方面没有找到任何可靠的东西,但我的测试行为似乎暗示了以下内容:基于我的测试格式化的方式(它们扩展了TestCase),我认为Ant正在执行我的测试用例作为Junit3测试。如上所述,当我运行针对Junit4格式化的测试套件(仅使用注释)时,我的测试按预期运行并执行。似乎当我直接通过Junit3格式化的测试用例时,我的注释没有被尊重,这意味着正在使用Junit3运行程序。

我的新问题是:是否有一种方法可以显式地告诉ant使用Junit 4运行程序?

如果您的测试用例使用Junit4TestAdapter, Ant似乎会自动解析使用哪个运行器。我最终不得不将以下方法添加到我所有的测试用例中:

public class MyTestCase extends TestCase
    public static junit.framework.Test suite() {
        return new JUnit4TestAdapter(MyTestCase.class);
    }
    ...
}

大多数人可能不需要扩展TestCase,但在我的例子中,这是必需的,因为Junit4充当Junit3服务器的客户机。

相关内容

  • 没有找到相关文章

最新更新