首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用JUnit4在JUnit3测试类上运行自定义Ant?

如何使用JUnit4在JUnit3测试类上运行自定义Ant?
EN

Stack Overflow用户
提问于 2011-04-20 08:52:57
回答 1查看 1.5K关注 0票数 8

我们有基于Spring2.0.8的AbstractTransactionalDataSourceSpringContextTests.构建的测试类有大量这样的代码,它们都是用JUnit3风格编写的。

为了使用JUnit 4过滤,我们编写了一个替换的JUnit38Runner,它允许我们将这些测试与特定的应用程序环境相匹配,并相应地过滤掉它们。

通过在自定义JUnit38Runner上使用@RunWith注释,整个测试套件可以在Ant之外很好地运行。

然而,当我们尝试在Ant中运行时,它会强制单独的测试要么作为junit.framework.TestSuite运行,要么封装在JUnit4TestAdapter中,这两种方式都忽略了JUnit4下的@RunWith注释。更糟糕的是,我们现有的套件被Ant显式地覆盖了,它直接调用suite()方法,而不是委托给JUnit。

我试图从Ant扩展,并简单地覆盖JUnitTestRunner ()方法,但是这个类根本不是为扩展而编写的。

除了复制整个JUnitTestRunner并对其进行黑客攻击(这将使我们面临脆弱的代码问题)之外,有没有人幸运地使用了其他方法来解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-18 01:35:45

我们遇到了类似的问题,尽管它不像运行junit任务那样干净,但也不是很难解决。我们创建了一个带有main()的类,这个类只调用Junit4Runner。它添加了一个RunListener,用于尝试以XML格式写出junit报告输出。我们的想法是,数据格式比runner更不容易改变,所以它不那么脆弱。

我已经剥离了相当数量的特定于环境的代码,但这是基本的想法。我们在ant中的test目标如下所示:

代码语言:javascript
复制
    <java failonerror="yes"
          fork="true"
          classname="com.mycompany.test.Junit4Runner">
        <classpath>
            <pathelement location="${basedir}/bin" />
            <pathelement path="${ProjectTest.classpath}" />
            <!-- above classpath includes junit-4.8.1.jar -->
        </classpath>
        <arg value="${test.class}" />
    </java>

您可以查看runner类here的代码。它不依赖于Java 6 SE和Junit 4.8之外的任何东西,并且可能与Java 5 SE兼容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5724435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档