在使用Maven和eclipse进行测试时,我需要一些关于Junits的小信息。 当我在eclipse中运行测试用例时通过。但是,当我通过maven运行失败时,相同的测试用例。我正在使用Spring和Junit。 testInsertClassUnit执行成功后。执行testInsertMap()方法的flushHibernateSession()时,它挂起。
Java文件:
class AbstractTest extends AbstractTransactionalJUnit4SpringContextTests{
/**
* Flushes the SessionFactory currently associated to TransactionManager bean.
*/
protected void changeTransactionDataSource(SessionFactory pSessionFactory) {
HibernateTransactionManager vTransactionManager = (HibernateTransactionManager) this.applicationContext.getBean(
"transactionManagerHibernate");
vTransactionManager.setSessionFactory(pSessionFactory);
vTransactionManager.setDataSource(SessionFactoryUtils.getDataSource(pSessionFactory));
}
}
public class AbstractTest extends AbstractTest {
private BefClassUnit mBefClassUnit;
private SessionFactory mSessionFactory;
@Autowired
@Qualifier("sessionFactoryCorporateBaseData")
public void setSessionFactoryCorporateBaseData(SessionFactory pSessionFactory) {
this.mSessionFactory = pSessionFactory;
}
@Autowired
@Qualifier("dataSourceBatch")
public void setDataSource(DataSource pDataSource) {
super.setDataSource(pDataSource);
}
@BeforeTransaction
public void onSetUpBeforeTransaction() throws Exception {
changeTransactionDataSource(mSessionFactory);
}
@Before
public void onSetUpInTransaction() throws Exception {
deleteFromTable(ClassUnitColumns.TABLE_NAME);
}
/**
* Test insert(ClassUnit pClassUnit).
*/
@Test
public void testInsertClassUnit() {
ClassUnit vClassUnit = getClassUnit("BU", "STO", "999", new DateTime(), new DateTime());
try {
getBefClassUnit().insert(vClassUnit);
flushHibernateSession(mSessionFactory);
assertEquals(1, countRowsInTable(ClassUnitColumns.TABLE_NAME));
} catch (Exception e) {
e.printStackTrace(System.err);
fail(e.getMessage());
}
}
/**
* Test insert(ClassUnitMap pClassUnitMap).
*/
@Test
public void testInsertMap() {
ClassUnitMap vClassUnitMap = new ClassUnitMap();
vClassUnitMap.putClassUnit(getClassUnit("BU", "STO", "999", new DateTime(), new DateTime()));
vClassUnitMap.putClassUnit(getClassUnit("GR", "RU", "AUW", new DateTime(), new DateTime()));
try {
getBefClassUnit().insert(vClassUnitMap);
flushHibernateSession(mSessionFactory);
assertEquals(2, countRowsInTable(ClassUnitColumns.TABLE_NAME));
} catch (Exception e) {
fail();
}
}
@Resource(name="befClassUnit")
public void setBefClassUnit(BefClassUnit unit) {
mBefClassUnit = unit;
}
}