我有幾個測試作爲WordSpec的一部分。從我閱讀Scalatest文檔時,應該創建一套測試。 HSQLDB正在爲該文件中的每個測試用例重新啓動。單元測試中的HSQLDB(Scalatest/JUnitRunner)
@RunWith(classOf[JUnitRunner])
class UserAgentTest extends WordSpec with BeforeAndAfterAll {
val userService: UserService = new UserServiceJpaImpl
var userAgent: ActorRef = _
var user: MutableUser = _
override def beforeAll(configMap: Map[String, Any]) {
TestUtil.deleteAllTestUsers()
user = TestUtil.createTestUser("joe")
user.cash = 500
user.exp = 10000
user.level = 10
userService.save(user)
userAgent = actorOf(new UserAgent(user.id)).start()
}
override def afterAll(configMap: Map[String, Any]) {
if (userAgent != null)
userAgent.stop()
}
"UserAgent" must {
"test 1..." in { ... }
"test 2..." in { ... }
}
}
其結果是,在裝載beforeAll測試數據不存在於試驗2我可以通過初始化DB每個測試「前」,而不是「beforeAll使這一工作(使用「)。這對於這樣的小測試來說不是問題,但稍後可能會出現問題。我用Maven運行它(它在從我的IDE中運行時有問題)
我也注意到,當我運行「mvn test」時,它似乎爲我的所有測試(意思是創建一個HSQLDB實例,我的上面的例子會成功)。當我將上述測試運行爲「mvn test -Dtest = UserAgentTest」時,它會失敗(它似乎創建了多個HSQLDB實例)。
不幸的是,運行「mvn test」會導致我的一些其他測試失敗,因爲單個HSQLDB實例用於我的所有測試套件。
我的問題是,如何讓我的測試設置爲每個測試套件創建一個(且只有一個)HSQLDB實例。
請編輯您的文本,並確切地說明您的問題。 – fredt 2012-01-06 20:38:26