当前位置: 首页 > 面试题库 >

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

陶树
2023-03-14
问题内容

我有一个自定义运行程序,它通过与其他硬件上运行的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.RemoteTestCaseRunner.class)批注。是否有我遗忘的事情,或者必须另外执行才能调用@RunWith注释?

这些测试仍在运行并创建报告,某些与平台无关的测试可以运行并通过,而并非需要与目标硬件上的服务进行通信的测试。

更新
我已经确定,在将@RunWith(Suite.class)与@SuiteClasses({})配对使用时,此方法可以很好地工作,但如果我明确给出测试用例,则不会如此。所以现在我真的不确定问题出在哪里。

更新
虽然我还没有找到任何可靠的方法,但是我的测试行为似乎暗示着以下几点:基于我的测试格式化方式(它们扩展了TestCase),我认为Ant将Junit3测试作为我的测试用例。如上所述,当我运行针对Junit4格式化的测试套件时(仅使用批注),我的测试将按预期运行并执行。看来,当我直接通过Junit3格式的测试用例时,就是不遵守我的注释,这意味着正在使用Junit3运行程序。

我的新问题是:有没有一种方法可以明确地告诉蚂蚁使用Junit 4Runner?


问题答案:

看来,如果您的测试用例使用Junit4TestAdapter,Ant会自动确定要使用哪个运行程序。我最终不得不在所有测试用例中添加以下方法:

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

你们中的大多数人可能不需要扩展TestCase,但就我而言,这是必需的,因为Junit4充当Junit3服务器的客户端。



 类似资料:
  • 如果我在运行ant-task时查看控制台日志,我可以看到新的.jar文件是如何发送的: 如果打开创建的binmanifest.jar,我会发现一个manifest.mf文件,其中包含Class-Path属性中的所有路径,格式为:../../class1/bin../../class2/bin../../classn/bin。但是由于某些原因,我的所有测试都失败了,因为我的类找不到。我错过了什么?谢

  • 我有使用selenium测试web服务器junit测试。当我使用ant从命令行运行测试时,一切工作正常,浏览器打开,测试按计划进行。浏览器打开,我可以看到测试正在运行。最近,我尝试添加自动测试,作为运行在Jenkins上的Ci循环的一部分。我以ant build命令运行它。我可以看到ant正在正常执行(测试类已经构建,我可以看到从测试到控制台的输出),但浏览器窗口从未打开,因此测试失败。这是我的a

  • 我在单元测试中使用了H2数据库,使用java配置:

  • 问题内容: 我的程序正在获取命令行参数。使用Ant时如何通过? 问题答案: 扩展了Richard Cook的答案。 这是运行任何程序(包括但不限于Java程序)的任务: 这是从文件运行Java程序的任务: 您可以像这样从命令行调用: 确保使用语法;如果运行此命令: 然后将尝试运行目标和。

  • 在过去的几天里,我从Eclipse切换到了Android Studio,几乎所有的东西都正常工作了。然而,当我生成一个签名的APK时,似乎ProGuard从未运行过。 我正在使用生成签名的APK向导,选择“运行ProGuard”并指定我的ProGuard。cfg作为配置文件。构建过程运行时没有错误,并生成了一个功能性apk,但该apk比Eclipse生成的apk大65%。当我通过Android S

  • /应用程序 index.html --sass ----style.scss --/css ----style.css Gulp CLI版本2.0.1和本地版本4.0.0 运行可以正确运行sass函数并编译我的sass文件。运行启动手表。。。 如果我在style.scss中更改一些样式并保存文件,我会得到: 但没有任何更改传播到css/style.css. 任何帮助都将不胜感激。