【问题标题】:How to run Spock tests in parallel?如何并行运行 Spock 测试?
【发布时间】:2013-10-29 15:04:39
【问题描述】:

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 规范/测试的方法?

【问题讨论】:

    标签: java multithreading testing groovy spock


    【解决方案1】:

    如果您的环境(构建工具、IDE)支持,您可以并行运行规范。目前无法并行运行功能或迭代。

    【讨论】:

    • 目前无法并行运行功能或迭代。 - 是否在积压中以供将来支持?
    • 它有问题。除非/直到我们打破 JUnit 执行模型,否则它可以做得如何还有待观察。
    • 有人设法让 Maven 并行运行 Spock 测试吗?我不能。参考:Spock mailing list
    猜你喜欢
    • 2017-06-13
    • 1970-01-01
    • 1970-01-01
    • 2014-09-28
    • 2014-08-02
    • 1970-01-01
    • 1970-01-01
    • 2016-12-12
    • 1970-01-01
    相关资源
    最近更新 更多