Chcę utworzyć kilka specyfikacji współpracujących z bazą danych.Sposób sekwencyjnego uruchamiania specyfikacji
class DocumentSpec extends mutable.Specification with BeforeAfterExample {
sequential
def before() = {createDB()}
def after() = {dropDB()}
// examples
// ...
}
Baza danych jest tworzona i upuszczana przed i po każdym przykładzie (wykonywana sekwencyjnie). Everithing działa zgodnie z oczekiwaniami, dopóki nie istnieje tylko jedna specyfikacja, która działa z bazą danych. Ponieważ specyfikacje są wykonywane równolegle, przeszkadzają i kończą się niepowodzeniem.
Mam nadzieję, że uda mi się tego uniknąć, nakazując specs2, aby sekwencyjnie przeprowadzał testy z efektami ubocznymi, jednocześnie prowadząc równoległe testy z efektem ubocznym. Czy to możliwe?
Tak, używam SBT. Ale nie jest naturalne, aby określać ustawienia zestawu testów w skrypcie budowania. Poza tym "parallelExecution in Test: = false" zapewnia, że wszystkie testy są wykonywane sekwencyjnie, podczas gdy muszę "uruchamiać testy z efektami ubocznymi sekwencyjnie, jednocześnie utrzymując testy wolne od skutków ubocznych, aby działały równolegle". Być może zastosowanie oddzielnego db do każdego testu bazy danych byłoby rozwiązaniem. – Jeriho
Lub prostsze, umieść testy testowe w odrębnym projekcie i przedefiniuj definicję 'parallelExecution' tylko dla tego projektu. –