在JUnit报告中添加额外信息

时间:2014-09-11 14:41:53

标签: java ant junit junit4

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

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

  1. 将XMLJUnitResultFormatter中的所有代码复制到MyFormatter.java并修改endTest()方法,以额外属性的形式添加额外信息以测试XML标记。 这真的很糟糕:(但我不能简单地覆盖它,因为在endTest()方法中没有getter / setter直接使用私有实例变量。
  2. 我的junit ant任务:

        <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标记的额外属性并显示在报告中。
    2. 我修改了报告的ant任务:

      <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中有没有比这更好的方法?

1 个答案:

答案 0 :(得分:0)

也许?

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

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

我留给你来决定这是一个更好的方法,而不是你设计的方法。