正在测试的代码中的 System.out.println 未出现在 TestNG 输出中

问题描述 投票:0回答:1

我有一些带有 System.out.println("blah") 的代码。我正在使用 TestNG 进行测试。如果我将 System.out.println 放在用 @Test 注释的块中,它们就会出现在测试输出中。正在测试的代码中的 System.out.println() 中没有显示任何内容。我正在使用 IntelliJ IDEA 社区版,该项目正在使用 Maven。有没有办法让内部代码的 println() 显示在测试中?

java java-8 testng
1个回答
0
投票

您遇到的行为是由于标准输出 (stdout) 在 Java 中的工作方式以及它与 TestNG 等测试框架的交互方式造成的。当您使用 TestNG 或其他测试框架运行测试时,被测试代码生成的输出(包括 System.out.println() 语句)可能不会立即在控制台中可见,因为测试框架捕获并管理输出流。

在您的情况下,由于您使用的是 IntelliJ IDEA Community Edition 和 Maven,因此您可以执行以下操作来捕获并显示正在测试的代码中的 System.out.println() 语句:

  1. 配置 Maven Surefire 插件 (pom.xml):Maven Surefire 插件负责在 Maven 项目中运行测试。您可以将其配置为将标准输出重定向到控制台,以便您的 System.out.println() 语句在测试执行期间可见。

  2. 在项目的 pom.xml 文件的 部分中,添加以下配置:

xml

<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>3.0.0</version> <!-- Use the appropriate version -->
        <configuration>
            <redirectTestOutputToFile>false</redirectTestOutputToFile>
        </configuration>
    </plugin>
</plugins>

此配置 (redirectTestOutputToFile) 告诉 Surefire 不要将测试输出重定向到文件,这应该有助于直接在控制台中显示 System.out.println() 语句。

  1. 确保 TestNG 输出设置: 在 IntelliJ IDEA 中,转到“文件”>“项目结构”>“项目设置”>“Maven”,并确保未选中“跳过测试”复选框。这可确保 IntelliJ 不会跳过测试执行。

    检查运行配置: 当您在 IntelliJ IDEA 中运行 TestNG 测试时,请确保您使用在 TestNG 下运行测试的适当运行配置。如果 TestNG 运行配置尚不存在,您可以创建一个。

完成这些配置后,当您使用 Maven 在 IntelliJ IDEA 中运行 TestNG 测试时,您应该能够在控制台中看到正在测试的代码中的 System.out.println() 语句。

请记住,从长远来看,使用打印语句进行调试可能不是最有效的方法。考虑使用 Log4j 或 SLF4J 等适当的日志记录框架,以便更好地控制代码中的日志记录级别和输出目的地。

© www.soinside.com 2019 - 2024. All rights reserved.