问题描述
我正在使用 Maven(带有 Surefire 插件)和 TestNG 进行测试自动化项目。因为我有很长时间运行的 UI 脚本(最多 20 分钟),所以我大量使用控制台日志。这对我来说至关重要,至少在每个脚本的开发阶段。但是,日志会在执行结束时一次性全部转储,而不是实时打印。我意识到这在并行执行的情况下非常有意义(以避免重叠问题),但我想要一种在以串行方式执行时禁用它的方法。我搜索了 Surefire 和 TestNG 文档,但似乎找不到方法。任何帮助,将不胜感激。这是一个非常简单的虚拟项目来重现问题:
projectRoot/pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>project</artifactId>
<version>1.0</version>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M5</version>
</plugin>
</plugins>
</pluginManagement>
</build>
<dependencies>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>7.3.0</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
projectRoot/src/test/java/DummyTest.java
import org.testng.annotations.*;
public class DummyTest {
@Test
public void ConsoleLoggingtest() {
System.out.println("STARTING TEST...");
try { Thread.sleep(30000); } catch (Exception ignored) { } //SIMULATE LONG-RUNNING TASK
System.out.println("TEST IS FINISHED!");
}
}
我过去常常在我的 IDE (IntelliJ IDEA) 中使用 mvn test
命令执行测试。请注意,为了简单起见,我使用了 System.out.println()
,但我使用任何日志库(如 log4j)都会得到相同的行为。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)