Spock 规范如下所示:
def mySpec(someData) {
//testStuff
where: someData << someDataList
}
someDataList
是经过测试的记录列表,对于该列表的每个成员,该mySpec
方法按顺序运行。我想要的是列表的前 k 个成员运行一个线程,接下来的 k 个成员在第二个线程中运行等等......理论上这可以通过 Executors Framework 和JUnitCore
类相对容易地完成(因为 Spock 依赖在 JUnit 上)。
然而,问题是如何将较小的注入someDataList
到具有mySpec
方法的类中,因为 Spock 不允许构造函数并且 JUnitCore 想要类名(具有测试/规范的类)而不是实例。一个丑陋的解决方案是制作 n 个副本mySpec
,每个副本都有一个不同的较小的someDataList
,并且每个副本都由不同的线程运行;但这是一个非常丑陋的解决方案。
有解决方法吗?还是有另一种并行运行 Spock 规范/测试的方法?