我正处于一种状态,我有2个特征在扩展,之后为集成测试做了不同的操作:一个管理数据库,另一个管理文件系统。例如:


 trait DBSpecification扩展BeforeAfterAll {

覆盖def beforeAll()= {
 println(“DB - > BeforeAll”)
 }

覆盖def afterAll()= {
 println(“DB - > AfterAll”)
 }
}

 trait FileSystemSpecification扩展BeforeAfterAll {

覆盖def beforeAll()= {
 println(“FileSystem - > BeforeAll”)
 }

覆盖def afterAll()= {
 println(“FileSystem - > AfterAll”)
 }
}

类MyTest使用FileSystemSpecification扩展带有DBSpecification的规范{

 {
中的“一些测试” 1 ==== 1
 }

}



 如果我这样做,只会执行最后一个特征的打印,这种情况下FileSystemSpecification。如果我尝试从特征中调用 super
,我会开始遇到一些编译问题。我已经尝试了很多方法,但无法弄清楚解决方案。
ScalaTest在其文档,但无法找到Specs2的方法。


有什么想法吗?

答案 0 :(得分:0)
是的特质不是编写行为的最佳选择。这是一种锅炉式的方法:
import org.specs2.mutable._
import org.specs2.specification._
trait DBSpecification extends BeforeAfterAll {
def beforeAll() = {
println("DB -> BeforeAll")
}
def afterAll() = {
println("DB -> AfterAll")
}
}
trait FileSystemSpecification extends BeforeAfterAll {
def beforeAll() = {
println("FileSystem -> BeforeAll")
}
def afterAll() = {
println("FileSystem -> AfterAll")
}
}
trait FileSystemDBSpecification extends DBSpecification with FileSystemSpecification {
override def beforeAll() = {
super[DBSpecification].beforeAll()
super[FileSystemSpecification].beforeAll()
}
override def afterAll() = {
super[DBSpecification].afterAll()
super[FileSystemSpecification].afterAll()
}
}
class MyTestSpec extends Specification with FileSystemDBSpecification {
"some test" in {
1 ==== 1
}
}