英文原文:
http://www.scalatest.org/user_guide/defining_base_classes
ScalaTest是一个测试工具包:它由重点轻量级的特征组成,您可以混合在一起来解决手头的问题。这种方法最大限度地减少了命名和隐含冲突的潜力,并有助于加快编译速度。
我们建议您为您的项目创建抽象基类,而不是通过将相同的特征混合在一起重复编码,将您最常使用的功能混合在一起。例如,您可能UnitSpec
为单元测试创建一个类(不是特征,用于更快速的编译),如下所示:
package com.mycompany.myproject import org.scalatest._ abstract class UnitSpec extends FlatSpec with Matchers with OptionValues with Inside with Inspectors
然后,您可以使用自定义基类为您的项目编写单元测试,如下所示:
package com.mycompany.myproject import org.scalatest._ class MySpec extends UnitSpec { // Your tests here
"A Stack" should "pop values in last-in-first-out order" in { val stack = new Stack[Int] info("start ......") stack.push(1) stack.push(2) info(stack.elems.take(0).toString()) assert(stack.pop() === 2) assert(stack.pop() === 1) }}
大多数项目最终都有多个基类,每个类都集中在不同类型的测试上。您可能需要一个需要数据库(可能命名DbSpec
)的集成测试的基类,另一个用于需要一个actor系统(可能命名的ActorSysSpec
)的集成测试,另一个需要数据库和一个actor系统(可能命名DbActorSysSpec
)的集成测试的基础类),等等。要开始使用,您只需创建一个用于单元测试的基类。
请注意:
在其余的用户指南中,我们不会扩展UnitSpec
。相反,我们展示所有涉及的特征,以便清楚所使用的内容,并使每个示例独立工作。