2016-11-08 69 views
2

当使用例如mvn test -Tn运行Maven构建并行化n -fold,我怎么能让Maven在其日志输出前加上并行测试运行器的标识符?目前日志输出看起来像:如何在Maven测试运行输出中获得并行执行标识符

[INFO] ------------------------------------------------------- 
[INFO] T E S T S 
[INFO] ------------------------------------------------------- 
[INFO] T E S T S 
[INFO] ------------------------------------------------------- 
[INFO] ------------------------------------------------------- 

这使得它非常难以分辨哪个实例记录了哪些

我想它表现出一定的并行执行的(线程,进程,等等)的标识符日志,如:

[1][INFO] ------------------------------------------------------- 
[1][INFO] T E S T S 
[2][INFO] ------------------------------------------------------- 
[2][INFO] T E S T S 
[2][INFO] ------------------------------------------------------- 
[1][INFO] ------------------------------------------------------- 

这是很容易通过增加-Dorg.slf4j.simpleLogger.showThreadName=trueMAVEN_OPTS envionment变量(如https://maven.apache.org/maven-logging.html描述),以获得在日志输出线程标识符,但是这似乎并没有影响万无一失的输出,例如:

[BuilderThread 1] [INFO] Surefire report directory: C:\redacted\path\to\module2\target\surefire-reports 
[BuilderThread 0] [INFO] Nothing to compile - all classes are up to date 
[BuilderThread 0] [INFO] 
[BuilderThread 0] [INFO] --- maven-surefire-plugin:2.18.1:test (default-test) @ module1 --- 
[BuilderThread 0] [INFO] Surefire report directory: C:\redacted\path\to\module1\target\surefire-reports 

------------------------------------------------------- 
T E S T S 
------------------------------------------------------- 

------------------------------------------------------- 
T E S T S 
------------------------------------------------------- 

回答

0

首先使用-T ...你不并行运行的集成测试运行并行模块的建设。

此外,如果你使用的是maven-surefire插件,你做错了什么,因为maven-surefire-plugin用于运行单元测试,而maven-failsafe-plugin用于集成测试。

要并行化测试本身,你应该检查docs如何做到这一点。

除此之外,您应该使用mvn ... verfiy以确保pre-integration-test,integration-testpost-integration-test阶段已经运行。如果您致电mvn .. integration-testpost-integration-test将不会被执行。

此外,通过定义集成测试不能parallized原因他们通常使用的资源,被耦合在其他ways..only单元测试可以通过定义原因被parallized它们是独立的等

+0

嗯,真,-T确实在更高层次上将事物并行化。我会用这些术语来重述这个问题。 其他笔记似乎是准确的,除了'mvn integration-test'肯定会运行'pre-integration-test'阶段。我希望它不会运行“后整合测试”,但这与实际问题没有关系。 至于集成测试是否可以并行化,那肯定取决于它们是如何写入的。我希望不可并行化的集成测试被注释掉。 –