В PlayFramework есть n + 1 потоков для prod и 1 поток для тестового профиля или профиля компиляции. Так что если у вас двухъядерный процессор, то есть 3 потока, если вы работаете в prod, и один поток, если вы запустили приложение с «test».
Теперь еще один интересный факт: по одному Tx на исполнение. Таким образом, когда ваше приложение запускается и вы запускаете свой самый первый тест, вот что происходит:
- Воспроизведение начинается с одного потока.
- Запускается JUnitRunner, выполняется первый тест myTest. Это HTTP-соединение с приложением. Причина, по которой вы видите 0, заключается в GET-ответе, который выполняется перед оператором @Before.
- @Before выполняется, создает ваши записи, и результат в @Before является точным, потому что он выполняется в том же Tx.
Поэтому я предлагаю вам либо использовать @BeforeClass, либо выполнить настройку не в @Before, а из прямого вызова в myTest для очень специфического теста с Response.
Я предполагаю, что если вы замените этот код
@Test
public void myTest() {
Response response= GET("/test");
}
с этим
@Test
public void myTest() {
assertEquals(1,User.count());
}
Правильно?
Так что причина, по которой вы получаете это, не ошибка. Это просто из-за этой конфигурации одного потока, которую мы имеем для тестовой среды.
Nicolas * * 1023