【发布时间】:2015-05-13 20:37:33
【问题描述】:
我有一个包含大量测试的 java 项目。我的构建使用 Gradle,测试使用 TestNG 并由 gradle 调用。我想通过在多个工作人员上同时运行我的构建并让每个工作人员只运行测试的子集来加速测试构建。
每个节点将提供 2 个环境变量 TOTAL_NODES 和 NODE_NUMBER,其中 TOTAL_NODES 是运行我的构建的节点数,NODE_NUMBER 是分配给这个特定节点的数字。
我想要一种对测试进行分区的方法,以便每个节点运行 ~ 1/TOTAL_NODES 测试,并且每个测试只运行一次。有没有使用 gradle 和 TestNG 的简单方法?
我可以通过在特定组中标记每个测试来手动将测试分成偶数组,但是测试有很多,这是一个主要的维护麻烦,而且如果节点数量发生变化,它也不会扩展。
Gradle 提供了测试过滤,但好像都是基于类名匹配,不能接受任意过滤功能。在将它们插入测试过滤器之前,我可以找到所有测试文件,然后根据一些散列方案对其进行细分,但这似乎不必要地复杂。
有没有更简单的方法来做到这一点?
【问题讨论】:
标签: java testing gradle continuous-integration testng