繁体   English   中英

如何在 ScalaTest 中禁用测试套件

[英]How to disable test suite in ScalaTest

如何禁用测试套件,即扩展类中的所有测试FunSpec

我找到的唯一解决方案是在每次测试前将it替换为ignore ,但在数十个测试中这样做很无聊。

在 1.8 中执行此操作的简单方法是添加一个采用伪参数的构造函数。 如果 ScalaTest(和 sbt)没有公共的、无参数的构造函数,它就不会发现该类:

class MySuite(ignore: String) extends FunSuite { 
  // ...
}

在 2.0 中,你可以只在类上写 @Ignore:

@Ignore
class MySuite extends FunSuite {
  // ...
}

您可以将@Ignore用于不同的测试和整个套装。

根据scalatest文档,如果你有这样的测试套件

describe ("some component") {
  it ("should do something") {
   ...
  }
  it ("should also do something else") {
   ...
  }
}

要仅禁用单个测试,您可以使用ignore()方法。

describe ("some  component") {
  ignore ("should do something") {
   ...
  }
  ...
}

标记麻烦的测试,然后根据标记 排除或包含测试。

标记是一次性的工作。

标签是一种选择,但您需要相应地标记每个测试,您不能以这种方式排除完整的套装。 但是,正如 user272735 提到的,标记测试是一次性的。

另一种选择是定义一个主套件并将nestedSuites列表限制为您想要运行的套件( 请参阅文档)。 明显的缺点是,您必须维护主测试套件,即向其中添加新创建的测试套件。 您可以通过遍历文件夹、创建可以找到的所有测试套件的列表并减去您放入黑名单的测试套件来避免这种情况。 此外,递归浏览文件夹已经让您有机会过滤掉符合(外部)给定标准的文件。

第三种选择 - 尽管更 hacky - 是更改要列入黑名单的套件所属的包。 然后,您可以使用测试运行器仅运行某些包中包含的套装。 在文档中阅读更多信息, “指定‘仅限成员’和‘通配符’套件路径”部分。

使用@DoNotDiscover

scaladoc

import org.scalatest._

@DoNotDiscover
class SetSpec extends FlatSpec {

  "An empty Set" should "have size 0" in {
    assert(Set.empty.size === 0)
  }

  it should "produce NoSuchElementException when head is invoked" in {
    intercept[NoSuchElementException] {
      Set.empty.head
    }
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM