import org.junit.After; import org.junit.AfterClass; import org.junit.BeforeClass; import play.Logger; import play.db.jpa.JPA; import play.test.FakeApplication; import play.test.Helpers; import javax.persistence.metamodel.EntityType; import java.util.List; /** * Created by leonard on 24.07.15. */ public class TestBase { public static FakeApplication app; @After public void tearDown() throws Exception { JPA.withTransaction(() -> { JPA.em().createNativeQuery("SET REFERENTIAL_INTEGRITY FALSE").executeUpdate(); JPA.em().getMetamodel().getEntities().stream().map(EntityType::getName).forEach(entity -> { final List items = JPA.em().createQuery("from " + entity).getResultList(); Logger.warn("Will delete {} items from {}.", items.size(), entity); items.stream().forEach(o -> JPA.em().remove(o)); }); JPA.em().createNativeQuery("SET REFERENTIAL_INTEGRITY TRUE").executeUpdate(); }); } @BeforeClass public static void startApp() { app = Helpers.fakeApplication(Helpers.inMemoryDatabase()); Helpers.start(app); } @AfterClass public static void stopApp() { Helpers.stop(app); } }