System.out.print() 在测试方法中不显示任何内容

2022-09-01 00:01:23

我试图在我的单元测试(mehotds)中打印一些数据,但它没有显示任何内容。但是,它在方法上正常工作。我正在使用JUnit和Maven Surefire插件。System.out@Test@Before

public class MyTests {

  @Before
  void init(){

    System.out.println("Initializing some data..."); // <- It works.

  }

  @Test
  void shouldRemoveSeries() {

    System.out.println("TEST: Should remove series"); // <- It doesn't.

  }
}

maven-surefire-plugin配置:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>2.15</version>
  <configuration>
    <includes>
      <include>**/*Tests.java</include>
    </includes>
  </configuration>
</plugin>

谢谢。


答案 1

也遇到了这个问题。我正在使用gradle来管理我的任务,我把它放在按文件末尾:build.gradle

test {
  testLogging.showStandardStreams = true
}

现在我看到.System.out.println(whateves)


答案 2

要通过 System.out.println 获取书面测试的输出,您需要配置 maven-surefire-plugin 以将此输出重定向到一个文件中,该文件可以通过使用以下方法实现:

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

选项 redirectTestOutputToFile 会将 System.out.println 等的输出重定向到单独创建的文件中:

文档摘录:

将此值设置为“true”可将单元测试标准输出重定向到文件(可在 reportsDirectory/testName-output 中找到.txt)。

除此之外,System.out.println在一般的单元测试中没有意义。


推荐