【发布时间】:2015-05-22 18:14:59
【问题描述】:
我习惯了 JUnit,在 JUnit 中,只需在单个文件(类)中定义这些测试并用 @Test 注释它们,就可以将多个测试(通常与一个类相关)分组。然后,为了运行其中的几个测试,使用@Suite.SuiteClasses 创建一个TestSuite,依此类推。
在 specs2 中,可以在扩展 Specification 的两个不同级别上对多个测试进行分组。例如:
"Whatever" should {
"do its job when possible" in {
whatever(new Thing).work must beSome
}
"return none when not possible" in {
whatever(null).work must beNone
}
}
我们可以将这种类型的多个Specification 分组到一个文件中,每个都可以打包多个检查,每个检查就像一个@Test,每个组就像一个JUnit 中的文件,然后每个@987654333 @ 在 JUnit 中作为 Suite,除了 Suite 被拆分为多个类,Specification 在单个类(即文件)中,这往往会产生巨大的文件。
所以问题有两个方面:
- 为了组织和可读性,我应该把这些东西放在哪里:
Specification以及每个类应该做的事情,即它应该通过的检查。 - 如果整个测试组被分成几个文件,我如何创建一个
Suite,如果可能的话以分层方式对它们进行分组,例如作为 ScalaTest 的Suites。
顺便说一句:我使用 Specs2 是因为我认为它是标准的(默认情况下是原型,一个(非常减少的)小(和轶事)样本证实了这一点 [1,2]),但是我正在考虑使用 ScalaTest。从数字(specs2、scalatest)来看,这可能是遵循 Scala 社区标准和习俗的最佳选择。我之所以提到这一点,是因为出于这些原因,像“不可能,使用 ScalaTest”这样的答案是可以接受的。
【问题讨论】:
标签: scala unit-testing hierarchy specs2