package org.dayatang.persistence.jpa;
import org.dayatang.btm.BtmUtils;
import org.dayatang.domain.AbstractEntity;
import org.dayatang.domain.InstanceFactory;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
import javax.transaction.SystemException;
public class AbstractIntegrationTest {
private static BtmUtils btmUtils;
private static EntityManagerFactory emf;
protected EntityManager entityManager;
private EntityTransaction tx;
protected EntityRepositoryJpa repository;
@BeforeClass
public static void setUpClass() throws Exception {
btmUtils = BtmUtils.readConfigurationFromClasspath("/datasources.properties");
btmUtils.setupDataSource();
emf = Persistence.createEntityManagerFactory("default");
}
@AfterClass
public static void tearDownClass() throws Exception {
emf.close();
btmUtils.closeDataSource();
btmUtils = null;
System.out.println("================================================");
System.out.println("关闭BTM");
}
@Before
public void setUp() {
InstanceFactory.bind(EntityManagerFactory.class, emf);
repository = new EntityRepositoryJpa(emf);
AbstractEntity.setRepository(repository);
entityManager = repository.getEntityManager();
tx = entityManager.getTransaction();
tx.begin();
}
@After
public void tearDown() throws IllegalStateException, SystemException {
tx.rollback();
entityManager.close();
repository = null;
AbstractEntity.setRepository(null);
}
}