gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:21:13 25 4
gpt4 key购买 nike

我有一个自定义运行器,它通过套接字连接将 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 runner。

我的新问题是:有没有办法明确告诉 ant 使用 Junit 4 runner?

最佳答案

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

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

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

关于java - 通过 Ant 运行 Junit 似乎没有使用自定义类运行器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7796295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com