【问题标题】:Execute parallel testing based on JUnit category基于JUnit类别执行并行测试
【发布时间】:2023-03-23 17:53:01
【问题描述】:

我使用 Junit 4.8 和 maven 3, 我有可以并行执行的测试,但其他测试不能,因为它可以访问 Oracle 数据库。 我想使用 Junit 类别来指示可以“并行化”的测试和其他测试,并通过使用简单的“mvn 测试”来启动测试。这有可能吗? 我认为我的 Maven 配置是这样的:

 <plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>2.12</version>
  <configuration>
     <groups>com.soft.Parallelizable</groups>
     <perCoreThreadCount>false</perCoreThreadCount>
     <forkMode>perthread</forkMode>
     <argLine>-Xms512m -Xmx512m</argLine>
     <parallel>classes</parallel>
     <threadCount>30</threadCount>
   </configuration>
   <configuration>
     <groups>com.soft.NotParallelizable</groups>
   </configuration>
  </plugin>

当然它不起作用,但它只是向你展示我想要做什么。 如果有人有想法:)

【问题讨论】:

  • Maven surefire 负责单元测试,这些单元测试应该始终能够并行运行,而 maven-failsafe-plugin 负责的集成测试可能是并行的。听起来您正在混合单元测试和集成测试。
  • 一个很好的用例可能是同步测试 DAO 对象,同时让其他模拟 DAO 并行运行的测试。我也会对这个问题的解决方案感兴趣。

标签: java maven junit parallel-processing maven-surefire-plugin


【解决方案1】:

在 2.18 版本之后有一个选项:

从 Surefire 2.18 开始,您可以应用 JCIP 注释 @net.jcip.annotations.NotThreadSafe

您可以阅读它here
它对我有用

【讨论】:

    猜你喜欢
    • 2020-10-19
    • 2015-04-05
    • 2011-01-09
    • 1970-01-01
    • 2015-12-27
    • 2011-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多