我有一个使用org.scalatest进行一些测试的scala应用程序。这些测试需要一些全局设置(和拆卸),以便管理测试数据库。
请不要告诉我我的测试不应该打到数据库,我应该使用Java-DAO-Stub-WTF-Overkill-Way™: - )。
我正在使用SBT运行测试,这提供了一种在测试之前和之后执行代码的方法:
testOptions in Test += Tests.Setup( () => println("Setup") )
testOptions in Test += Tests.Cleanup( () => println("Cleanup") )
不幸的是我无法访问那里的课程。不出所料,将它们导入build.sbt也不起作用。
有什么想法吗?
答案 0 :(得分:4)
根据您的需要,您可以使用BeforeAndAfterAll或BeforeAndAfter特征。
BeforeAndAfterAll:
可以混合到需要之前调用的方法的套件中的特征 并在执行套件后。该特征允许执行代码 在套件的所有测试和嵌套套件之前和/或之后 运行
因此,在这种情况下,您将定义一个MasterSuite,其中包含所有其他套件/测试,从而扩展了这一特性。
BeforeAndAfter:
可以混合到需要在之前执行代码的套件中的特性 运行每个测试后。这种特性促进了一种测试方式 替换实例变量中保存的可变夹具对象 或在每个测试或套件之前重新初始化。