【问题标题】:How to run ordered JUnit5 tests in parallel mode如何以并行模式运行有序的 JUnit5 测试
【发布时间】:2020-09-10 18:28:55
【问题描述】:

我需要运行依赖测试(不是单元,而是带有 selenium 的长 UI 场景)。有与环境有关的原因,因此我必须准备一个“随机”状态,并在其他测试中使用此状态。为此,我执行了一系列操作,之后我得到一个链接,将其保存到一个方法中的静态字符串变量,该方法注释为@Order (1)。之后,在@Order注解的方法(2个及更多)中,存储在静态String变量中的链接可用

通常顺序是随机的,但如果您关注manual,那么在一个线程中一切正常。

测试的数量非常多,因此并行运行它们似乎是合乎逻辑的。对于 5.3 和更新版本,它是 no problem。我使用“配置参数并行执行顶级类,但在同一线程中执行方法”。对于普通的测试类,它是这样工作的。 而现在的问题。只需添加@Execution(ExecutionMode.CONCURRENT),订单如何停止工作。因此,我得到的不是静态变量中的链接,而是空值。 有办法解决吗?

提前谢谢你

【问题讨论】:

  • 对代码的散文描述很难理解。考虑添加一个最小的代码示例来揭示您要解决的问题。
  • 对不起,描述对我来说似乎很透明。下面是简单的测试类:` `
  • @Execution(ExecutionMode.CONCURRENT) @TestMethodOrder(MethodOrderer.OrderAnnotation.class) //both on-off does not work: //@TestInstance(TestInstance.Lifecycle.PER_CLASS) public class TariffNewNonOfficialTest extends SetupEnv implements HelpMeth { private static String testUrl; @Order(1) @Test void firstTest() { /*someActons*/ testUrl=driver.getCurrentUrl(); } Order(2) 使用 testUrl。属性设置为并行执行顶级类,但在同一线程中执行方法。
  • 格式化代码无法在 cmets 中正确显示。我建议你更新问题并把它放在那里。

标签: java selenium junit5


【解决方案1】:

相当菜鸟的错误。 事实证明,将注解 @Execution(ExecutionMode.SAME_THREAD) 添加到每个应该在与父级相同的线程中执行的方法中就足够了。

不完全清楚junit-platform.properties 中这些设置的作用。 但也许我通过阅读手册一厢情愿。 花了半天时间才明​​白这一点(((

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-07
    • 2018-05-29
    • 1970-01-01
    • 2021-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多