Я мигрирующей мое заявление от Play1.2+Java7
к Play1.4+Java8
Испытания проходят с Playframework 1.2.x, но не с Playframework 1.4.x
Play1.2+Java7
мой тест проходит нормально Play1.4+Java8
мой тест не пройден.
Я уменьшил код до минимума и воспроизвел проблему. Вот главная линия
Модель
package models;
import play.db.jpa.Model;
import javax.persistence.Entity;
@Entity
public class Token extends Model {
public String name;
public String role;
}
Контроллер
package controllers;
import models.Token;
import play.mvc.Controller;
public class Application extends Controller {
public static void index() {
renderJSON(Token.all().fetch());
}
}
Тестовая конфигурация БД
%test.application.mode=dev
%test.db.url=jdbc:h2:mem:play;MODE=MYSQL;LOCK_MODE=0
%test.jpa.ddl=create
Испытание
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import org.junit.*;
import org.junit.Before;
import play.test.*;
import play.mvc.*;
import play.mvc.Http.*;
import models.*;
public class ApplicationTest extends FunctionalTest {
@Before
public void before() {
Token.deleteAll();
}
@Test
public void testThatIndexPageWorks() {
{
Response response = GET("/");
assertIsOk(response);
String content = getContent(response);
System.out.println(content);
assertFalse(content.contains("le nom"));
assertFalse(content.contains("identifier"));
}
Token t = new Token();
t.name="le nom";
t.role="identifier";
t.save();
{
Response response = GET("/");
assertIsOk(response);
String content = getContent(response);
System.out.println(content);
assertTrue(content.contains("le nom"));
assertTrue(content.contains("identifier"));
}
}
}
Поведение не предсказуемо. Представляется, что сохранение лица в тестах поручены асинхронной и вызова контроллера зависит от потоков, в то время как это было не в версии 1.2
Я могу предоставить весь проект, если необходимый