java - JUnit 报告未显示使用类别和 ANT 时测试的所有类

标签 java ant junit

使用 ANT 脚本运行 JUnit 测试,一组测试 (TestSCF) 是所有测试的子集。这些测试将作为夜间构建的一部分运行并生成报告。使用@IncludeCategory定义需要运行的测试,并使用ClasspathSuite定位项目中的所有测试。

示例测试类声明,定义为作为 T​​estSCF 子集运行。 TestSCF 是一个空接口(interface)。

@Category(TestSCF.class)
public class ErrorDialogTest extends TestCase
{
    ....
}

主要测试套件。

@RunWith(Categories.class)
@IncludeCategory(TestSCF.class)
@SuiteClasses({AllTests.class})
public class SCFTests
{
}

AllTests 声明

@RunWith(ClasspathSuite.class)
public class AllTests
{
}

ANT脚本的相关部分

<!-- Run the unit tests -->
<junit showoutput   ="true"
       printsummary = "yes"
       fork         = "yes"
       timeout      = "60000" >
  <formatter type="xml"/>
  <classpath refid="cpath"/>

  <batchtest fork  = "yes"
             todir = "${test.report.dir}">
    <fileset dir="${src.dir}">
      <include name="**/SCFTests.java"/>
    </fileset>
  </batchtest>
</junit>

<!-- Copy the XML files that get deleted by junitreport -->
<mkdir dir="${junit.html.dir}/xml_files"/>
<copy todir="${junit.html.dir}/xml_files" preservelastmodified="true">
  <fileset dir="${test.report.dir}">
      <include name="*.xml"/>
  </fileset>
</copy>

<!-- Format the test results into browsable HTML -->
<junitreport todir="${junit.html.dir}">
  <fileset dir="${test.report.dir}">
    <include name="TEST-*.xml"/>
  </fileset>
  <report format="frames" todir="${junit.html.dir}"/>
</junitreport>

问题在于 Junit 报告仅显示一个经过测试的类 - SCFTests。我理解为什么会发生这种情况,但想知道是否有一种方法可以为实际测试的每个类生成报告,或者有一种方法可以将测试的类的名称添加到测试结果的“名称”中报告。

例如:

dev.sca.test.ErrorDialogTest 45 Passed, 3 Failures, 0 Errors

相对于

SCFTests 45 Passed, 3 Failures, 0 Errors

最佳答案

为了将来引用,我可以通过如下修改 junit-frames.xsl 文件来在报告的“名称”列中打印类路径。

<td>
  <a name="{@name}"/>
  <xsl:choose>
    <xsl:when test="boolean($show.class)">
      <a href="{concat($class.href, '#', @name)}"><xsl:value-of select="@name"/></a>
    </xsl:when>
    <xsl:otherwise>
      <xsl:value-of select="@name"/>
    </xsl:otherwise>
  </xsl:choose>
</td>

成为

<td>
  <a name="{@name}"/>
  <xsl:choose>
    <xsl:when test="boolean($show.class)">
      <a href="{concat($class.href, '#', @classname)}"><xsl:value-of select="@classname"/></a>
    </xsl:when>
    <xsl:otherwise>
      <xsl:value-of select="@classname"/>
    </xsl:otherwise>
  </xsl:choose>
</td>

结果:

Name                         Status Type    Time(s)
dev.sca.test.ErrorDialogTest Success        1.45
dev.sca.test.SomeOtherTest   Success        2.03

关于java - JUnit 报告未显示使用类别和 ANT 时测试的所有类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13834264/

相关文章:

java - 使用 Jackson 反序列化数组 JSON 时出错

java - 如何将 java.util.Date 转换为 java.sql.Date?

java - 使用 ANT 从 jar 库加载 java premain-class

java - 用于比较器的 Junit 匹配器?

java - 在 AIX 上运行 JUnit 或 testng TC

java - 无法在 Java 中循环 ResultSet

ant - 如何使用Ant重命名文件夹?

android - 从 Android 生成的构建文件构建 Ant 失败 - 如何修复?

java - 使用 IntelliJ 对 hibernate 进行单元测试,如何设置 session 上下文?使用种子设置测试 mysql 数据库

java - android - 如何使用相机从 sd 卡获取图像