【问题标题】:How to add data to testcase with JUnit and Maven Surefire Plugin如何使用 JUnit 和 Maven Surefire 插件向测试用例添加数据
【发布时间】:2018-08-14 15:11:13
【问题描述】:

我有一个正在运行的带有 JUnit 测试的 maven 项目。 Maven Surefire 插件在测试后会删除 xml 文件。这些 xml 文件除了属性和日志之外,还包括以下信息:

<testcase xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         name="methodNameForTest"
         classname="com.my.test.project.Testclass"
         time="20.931">
  <error type="java.lang.NullPointerException">java.lang.NullPointerException</error>
  </testcase>

谁能解释一下数据从 JUnit 写入这些括号的常用方式以及如何向其中添加更多数据?

用这些词搜索文件并没有帮助。在我的项目中找不到任何东西。

提前谢谢你

【问题讨论】:

    标签: java xml maven junit maven-surefire-plugin


    【解决方案1】:

    您不能将自定义消息添加到由maven-surefire-plugin 生成的 XML 报告中。您可以获得的最接近的方法是配置此插件以将您的 System.out.println() 调用重定向到文本文件。这是在您的pom.xml 中借助redirectTestOutputToFile 配置进行配置的,如下所示:

    <build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <redirectTestOutputToFile>true</redirectTestOutputToFile>
            </configuration>
        </plugin>
    </plugins>
    </build>
    

    默认情况下,这将创建target/surefire-reports/&lt;test-name&gt;-output.txt。从您的测试中对System.out.println(...) 的任何调用都将被重定向到此文件。

    【讨论】:

    • 但是surefire从哪里得到它写入的数据呢?我的意思是,名称、类名和时间的值必须来自某个地方。
    • 它运行你的代码。因此,它知道类名和方法名。它从您的 JUnit 测试类中获取。还是我在理解您的问题时遗漏了什么?
    • 没有办法告诉它用更多变量扩展 吗? :(
    • 这是一个标准的插件,具有标准的报告布局。如果它对大多数人都有效,您是否需要重新考虑为什么需要自定义消息才能进入确定的火灾报告?您的一个选项可能是使用记录器并将消息记录到不同的文件中,并使用自定义工具组合报告。但再一次,再想想你为什么需要这个。
    猜你喜欢
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 2014-01-07
    • 2020-07-25
    • 1970-01-01
    • 1970-01-01
    • 2020-10-14
    • 1970-01-01
    相关资源
    最近更新 更多