【问题标题】:Using gradle, testNG is scheduling tests in parallel inefficiently使用 gradle,testNG 并行调度测试效率低下
【发布时间】:2015-05-04 14:45:44
【问题描述】:

这是我的第一个问题,所以我希望尽可能简洁。

我目前正在使用 gradle 来构建和运行大约 1.7k 的测试。正在使用命令“useTestNG { excludeGroups 'functional,integration,performance,serialization,endtoend,version'}”运行测试。

我遇到的问题是,当分叉 5 个 chrome 实例时,它们开始运行所有测试,然后运行 ​​4 个,然后是 3 个,然后是 2 个,然后是 1 个。这里的想法是,测试结束时的工作量被低效地分配。理想情况下,如果所有 5 个实例都在测试期间运行,那么执行所有测试所需的时间会显着减少。

我发现 TestNG 有一个“并行”选项,可以传递给它,告诉它如何拆分测试。我最后一次加快速度的尝试是添加此选项;

useTestNG { excludeGroups '功能、集成、性能、序列化、端到端、版本' 并行'实例'}

但这似乎并没有奏效。任何帮助将不胜感激。

提前谢谢

【问题讨论】:

  • 您是否尝试过使用 Gradle Test 任务的 maxParallelForks 选项? gradle.org/docs/current/dsl/…
  • 是的,我已经在使用它了。这决定了会有多少叉子。但它不能确定测试将如何拆分。不过感谢您的输入:)

标签: selenium gradle parallel-processing testng


【解决方案1】:

您是否在使用多个“testng.xml”文件?如果是这样,那很可能是原因。每个 xml 文件都会在下一个文件开始之前完成。

【讨论】:

  • 嘿肖恩奈特,我不相信我正在使用 xml 的测试用例。测试用例是从包含一堆 .java 文件的文件夹中提取的。我猜它使用的是 Junit API,因为在每个文件中,在不同的函数之前都有 1 个或多个 @Test。
  • 当您在 Gradle 脚本中调用 useTestNG 时,我对您的声明“它正在使用 Junit AP”感到困惑 - 是否尝试同时使用两者?假设您正在使用 TestNG,您如何在类、测试或方法级别并行测试?
  • 现在我在“测试”级别并行测试。这可以在下面看到:task honorTest(type: Test, dependsOn: 'seleniumBaseTask') { configure seleniumTestConfiguration description 'Runs partial Selenium Functional Tests' useTestNG { excludeGroups 'functional,integration,performance,serialization,endtoend,version' parallel 'tests'} } HonorTest 是一个测试套件,它基于为该套件指定的测试运行。例如:@Test(groups={"honor"}) public void multipleFormatting0() { openWebsite(DOCUMENT); }
  • 当你与方法并行时会发生什么?
  • 这似乎没有什么不同。我已经尝试过“方法”、“测试”和“实例”,它们都需要大约 1 小时才能完成。我再次运行它,看看最后是否有一个 selenium 实例正在处理所有测试,而不是应该处理的 5 个。
猜你喜欢
  • 2015-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-04
  • 2022-01-23
相关资源
最近更新 更多