在JUnit报告中添加额外信息



我正在使用JUnit4,希望在JUnit报告中显示一些额外的信息。为此,我将把额外的信息转储到报告xml中,然后修改xslt以读取额外的信息来生成HTML报告。

到目前为止,有效的步骤是:

  1. 将XMLJUnitResultFormatter中的所有代码复制到MyFormatter.java中,并修改endTest()方法,将额外信息以额外属性的形式添加到testcase XML标记中。这真的很糟糕:(但我不能简单地重写它,因为在endTest()方法中直接使用私有实例变量而不使用getters/ssetter

我的下级任务:

    <junit fork="yes" printsummary="withOutAndErr">
        <!--<formatter type="xml"/>-->
        <formatter classname="com.some.junit.MyFormatter" extension=".xml"/>
        <test name="com.some.source.MyTestClassTest" todir="${junit.output.dir}"/>
        <classpath refid="JUnitProject.classpath"/>
    </junit>
  1. 修改xslt以读取TESTCASE xml标记的额外属性并在报告中显示

我为报告修改的蚂蚁任务:

<target name="junitreport" depends="MyTestClassTest">
    <junitreport todir="${junit.output.dir}">
        <fileset dir="${junit.output.dir}">
            <include name="TEST-*.xml"/>
        </fileset>
        <report styledir="reportstyle" format="frames" todir="${junit.output.dir}"/>
    </junitreport>
</target>

我发现使用TestNG或SureFire Maven插件作为解决方案,但我不能在我的项目中使用它们。

在JUnit4中还有比这更好的方法吗?

也许?

接口org.apache.tools.ant.taskdefs.optional.junit.JUnitResultFormatter是定制输出格式所需要实现的。这可以写入任何输出流,这是构建在框架中的所有可扩展性。您是对的,没有一个好的方法可以扩展XMLJUnitResultFormatter的功能来定制输出。复制粘贴修改当然不理想,但肯定是可以接受的。

另一种方法可能是在ant任务中定义多个formatter。一个可以是常规的xml格式化程序,另一个是您的自定义格式化程序以获取更多信息。这两个文件可以组合起来,然后使用xsl转换转换为HTML。

我让你来决定这是否是一种比你设计的更好的方法。

相关内容

  • 没有找到相关文章

最新更新