我想创建一些与数据库互操作规范。
class DocumentSpec extends mutable.Specification with BeforeAfterExample {
sequential
def before() = {createDB()}
def after() = {dropDB()}
// examples
// ...
}
在每个示例(按顺序执行)之前和之后创建和删除数据库。在只有一个规范与数据库一起工作之前,所有事情都按预期工作。因为规范是并行执行的,所以它们会相互干扰并失败。
我希望我能够通过指示specs2顺序运行有副作用的测试,同时保持无副作用的测试并行运行来避免这种情况。
3条答案
按热度按时间at0kjp5o1#
我想您正在使用SBT?如果是,请查看文档:http://www.scala-sbt.org/release/docs/Detailed-Topics/Parallel-Execution
相关的SBT设置为
parallelExecution
。将此设置添加到项目定义中:cdmah0mi2#
如果你想连续运行specs 2中的一个Specification,只需在Specification的开头添加
sequential
方法调用。例如:**更新:**正如在注解中正确提到的,这将使测试在一个 * 单一 * 规范中顺序运行!其他规范可能仍然并行运行。
bq9c1y663#
同时还有一个更好的解决方案(http://www.scala-sbt.org/release/docs/Parallel-Execution.html):
SBT0.12.0引入了用于限制超出通常排序声明的任务并发的通用基础结构。
此配置将按顺序运行所有测试,如果它们在子项目中也是如此:
我还没有测试是否可以被每个子项目覆盖,以便子项目可以并行运行其测试。