У меня есть несколько тестов как часть 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. Я могу сделать эту работу путем инициализации БД для каждого теста (с использованием «до» вместо «beforeAll «). Это не проблема для небольшого теста, подобного этому, но может быть проблемой позже. Я запускаю это с Maven (у него проблемы при запуске из моей IDE)
Я также заметил, что когда я запускаю «тест mvn», он создает отдельный экземпляр HSQLDB для всех моих тестов (что означает, что мой пример выше будет успешным). Когда я запускаю вышеуказанный тест как «mvn test -Dtest = UserAgentTest», он будет терпеть неудачу (он, кажется, создает несколько экземпляров HSQLDB).
К сожалению, работа с тестом «mvn test» приведет к сбою некоторых других моих тестов, поскольку один экземпляр HSQLDB используется для всех моих тестовых наборов.
Мой вопрос, как я могу получить свою тестовую установку для создания одного (и только одного) экземпляра HSQLDB для каждого набора тестов.
Пожалуйста, отредактируйте ваш текст и дайте ему понять, в чем ваши вопросы. – fredt