【发布时间】:2020-02-22 12:43:26
【问题描述】:
我有一堆由 sbt 运行的集成测试,给定测试 N 个套件,每个套件有 1..M 个测试。
我设置了fork in IntegrationTest := true,但测试套件总是按顺序执行。根据文档,情况一定不是这样:测试套件应该同时执行。
测试套件是一个如下的类:
class MyTestSuite1 extends FlatSpec with Matchers
...
it should "do A" {}
it should "do B" {}
class MyTestSuite2 extends FlatSpec with Matchers
...
it should "do C" {}
it should "do D" {}
问题
MyTestSuite1 和 MyTestSuiteN 依次执行(准确的字母顺序)
期待
MyTestSuite1 和 MyTestSuiteM 同时执行
环境
.sbopts:
-J-Xms1G
-J-Xmx4G
-J-XX:MaxMetaspaceSize=512m
-J-Xss4M
注意
我注意到所有测试都使用相同的池和线程运行,例如,pool-1-thread-1 用于所有测试。
sbt 版本:1.2.8 斯卡拉:2.12.8 操作系统:MacOS 10.15、Ubuntu 19.04 Scalatest 版本:3.2.0-SNAP10
尝试了 sbt v. 1.3.2 - 结果相同。 添加
testOptions in IntegrationTest += Tests.Argument(TestFrameworks.ScalaTest, "-P4"),
没有帮助。
============
更新
fork in(IntegrationTest, test) := true 在全球范围内工作,但我有 2 个项目,我想让它工作以保留项目的相对路径。
例如
lazy val `p1` = Project(id = "p1", base = file("./p1"))
.configs(IntegrationTest)
.settings(Defaults.itSettings: _*)
.settings(
fork in(IntegrationTest, test) := true,
...)
lazy val `p2` = Project(id = "p2", base = file("./p2"))
.configs(IntegrationTest)
.settings(Defaults.itSettings: _*)
.settings(
fork in(IntegrationTest, test) := true,
...)
不并行运行测试
相反,它是并行运行的,但是很明显,主目录设置为“。”而不是分别为“./p1”或“./p2”:
fork in(IntegrationTest, test) := true
lazy val `p1` = Project(id = "p1", base = file("./p1"))
.configs(IntegrationTest)
.settings(Defaults.itSettings: _*)
【问题讨论】:
-
欢迎来到 SO Nik,这似乎相关吗? stackoverflow.com/a/15753250/98057
-
你好,不,我认为这些是不同的问题。