Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在JUnit报告中添加额外信息_Java_Ant_Junit_Junit4 - Fatal编程技术网

Java 在JUnit报告中添加额外信息

Java 在JUnit报告中添加额外信息,java,ant,junit,junit4,Java,Ant,Junit,Junit4,我正在使用JUnit4,希望在JUnit报告中显示一些额外的信息。 为此,我将把额外的信息转储到报告xml中,然后修改xslt以读取额外的信息来生成HTML报告 到目前为止,有效的步骤包括: 将所有代码从XMLJUnitResultFormatter复制到MyFormatter.java,并修改endTest()方法,以将额外信息以额外属性的形式添加到testcase XML标记中。 这真的很糟糕:(但我不能简单地重写它,因为在endTest()方法中直接使用私有实例变量,而不使用getter/

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

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

  • 将所有代码从XMLJUnitResultFormatter复制到MyFormatter.java,并修改endTest()方法,以将额外信息以额外属性的形式添加到testcase XML标记中。 这真的很糟糕:(但我不能简单地重写它,因为在endTest()方法中直接使用私有实例变量,而不使用getter/setter)
  • 我的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>
    
    
    
  • 修改xslt以读取TestCaseXML标记的额外属性并显示在报告中
  • 我的报告的已修改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或SurefireMaven插件作为解决方案的情况,但我不能在我的项目中使用它们

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

    也许吧

    自定义输出格式需要实现接口
    org.apache.tools.ant.taskdefs.optional.junit.JUnitResultFormatter
    。这可以写入任何输出流,这是框架中内置的所有可扩展性。没错,扩展
    XMLJUnitResultF功能的方法不是很好ormatter
    自定义输出。复制粘贴修改当然不理想,但可以接受

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

    我让你来决定这是不是比你设计的更好的方法