【问题标题】:SBT / Scala - Execute tests in orderSBT / Scala - 按顺序执行测试
【发布时间】:2021-07-08 20:17:07
【问题描述】:

我们正在运行“sbt test”来在多个项目上执行我们的测试。但是我们现在有需要按特定顺序执行的测试。因此,首先使用@attributeX 进行所有测试,在所有这些测试完成后,我们要执行每个不包含属性@attributeX 的测试。

sbt testOnly -- -n attributeX
sbt testOnly -- -l attributeX

此实现工作正常,但我们的问题在于测试报告。当第一次运行完成时,我们有这些测试的测试报告,但是当第二次运行完成时,所有 XML 文件都会重新生成,这会删除第一次运行的结果。

是否有一种简单的方法可以在build.sbt 中配置我们希望以特定顺序运行测试组(因此我们仍然希望并行运行测试,但只能在组内运行)。或者我们可以在分别执行这些命令时以某种方式将两个测试结果合并为一个?

【问题讨论】:

    标签: scala sbt scalatest sbt-plugin


    【解决方案1】:

    您可以按套房级别订购它们,例如:

    @DoNotDiscover
    class MyTest1 extends AnyFlatSpec ...
    
    @DoNotDiscover
    class MyTest2 extends AnyFlatSpec ...
    

    然后:

    import org.scalatest.Sequential
    
    class SequentialSuite extends Sequential(
       new MyTest1,
       new MyTest2
    )
    

    现在,当您运行 sbt test 时,它将首先在 MyTest1 中执行测试,然后在 MyTest2 中执行测试。

    这与您的标签无关。
    这有点道理,因为标签通常是快/慢/使用数据库。
    它们通常用于仅本地/环境相关等。

    【讨论】:

    • 您好,感谢您的帮助。我们确实需要它来拆分需要生产数据和不需要生产数据进行测试的测试。我们恢复数据库,然后我们首先执行所有需要生产数据的测试,然后我们截断整个数据库并执行不需要数据的所有测试。但这对我来说看起来像是双重管理,对吧? SBT 内部没有其他解决方案吗?
    • 据我所知没有这么简单的事情...... :D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-09
    • 1970-01-01
    • 1970-01-01
    • 2018-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多