问题描述
我有一个使用 org.scalatest 进行一些测试的 scala 应用程序.这些测试需要一些全局设置(和拆卸),以便管理测试数据库.
I have a scala application with some test using org.scalatest. These test need some global setup (and teardown), in order to manage the test database.
请不要告诉我我的测试不应该打到数据库,我应该使用 Java-DAO-Stub-WTF-Overkill-Way™ :-).
Please don't tell me my tests should not hit the database and I should do it the Java-DAO-Stub-WTF-Overkill-Way™ :-).
我正在使用 SBT 运行测试,它提供了一种在测试前后执行代码的方法:
I'm running the tests using SBT, which provides a way to execute code before and after test:
testOptions in Test += Tests.Setup( () => println("Setup") )
testOptions in Test += Tests.Cleanup( () => println("Cleanup") )
很遗憾,我无法访问那里的相关课程.不出所料,将它们导入 build.sbt 也不起作用.
Unfortunately I cannot access the classes in question there. Unsurprisingly, importing them into build.sbt does not work either.
有什么想法吗?
推荐答案
你可以使用 BeforeAndAfterAll 或 BeforeAndAfter特征,取决于您的需求.
You can use the BeforeAndAfterAll or BeforeAndAfter traits, depending upon your needs.
BeforeAndAfterAll:
BeforeAndAfterAll:
可以混合到需要之前调用方法的套件中的特征并在执行套件之后.此特征允许执行代码在套件的所有测试和嵌套套件之前和/或之后运行.
因此,在本例中,您将定义一个包含所有其他套件/测试的 MasterSuite,它扩展了此特性.
So in this instance, you would define a MasterSuite which contains all other Suites/Tests, which extends this trait.
之前和之后:
可以混入需要在之前和之前执行代码的套件中的特征运行每个测试后.这种特性促进了一种测试风格实例变量中保存的可变夹具对象被替换或在每个测试或套件之前重新初始化.
这篇关于org.scalatest:全局设置(比如 beforeAllSuites?)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!