如何在ScalaTest中禁用测试套件

f87krz0w  于 2022-11-09  发布在  Scala
关注(0)|答案(6)|浏览(172)

如何禁用测试套件,即扩展FunSpec的类内的所有测试?
我找到的唯一解决方案是在每次测试前将it替换为ignore,但在数十个测试中这样做很无聊。

dgtucam1

dgtucam11#

在1.8中,实现这一点的简单方法是添加一个接受伪参数的构造函数。如果类没有公共的、无参数的构造函数,ScalaTest(和SBT)就不会发现它:

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

在2.0中,您只需在类中编写@Ignore:

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

ccrfmcuu2#

您可以使用@Ignore进行不同的测试和整个测试。

ddhy6vgd

ddhy6vgd3#

根据scalatest文档,假设您有这样的测试套件

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

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

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

siotufzp4#

Tag这些麻烦的测试,然后根据标签排除或包括测试。
标记是一次性的工作。

wgmfuz8q

wgmfuz8q5#

标签是一种选择,但您需要相应地为每个测试添加标签,不能以这种方式排除完整的套装。然而,正如用户272735提到的,标记测试是一次性的工作。
另一种选择是定义一个主套件,并将nestedSuites的列表限制为您想要运行的套件(请参阅文档)。明显的缺点是,您必须维护主测试套件,即向其添加新创建的测试套件。你可以通过递归遍历你的文件夹,创建一个所有可以找到的测试服的列表,然后减去你放入黑名单中的那些,来避免这种情况。此外,递归浏览您的文件夹已经为您提供了筛选出符合(外部)给定标准的文件的机会。
第三个选择是改变你想要列入黑名单的套房所属的套餐--尽管更加老套。然后,您可以使用测试跑步器来仅运行某些包中包含的套装。有关详细信息,请参阅文档“指定‘仅成员’和‘通配符’套件路径”一节。

cvxl0en2

cvxl0en26#

使用*@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
    }
  }
}

相关问题