我正在使用針對JUnit測試Spring上下文文件春天嵌入式JDBC數據庫配置。我正在使用內存數據庫進行測試。我想單元測試只有DAO層和單元測試我正在使用內存數據庫中的spring容器。了Spring JDBC嵌入式數據庫lifecycyle
當我運行JUnit測試情況下,我沒有看到第二個測試案例的第一個測試用例值(testAddressCreate在testAddressUpdate測試用例)。我現在不在我的Junit中使用@Before或@After。我不確定spring如何在內存數據庫中創建並啓動它。根據行爲,它似乎是在每個測試用例之前創建或重置。有人知道嗎?另外我們如何連接到在內存數據庫中創建的spring。請建議。
Spring配置如下:
<jdbc:embedded-database id="dataSource" type="HSQL">
<jdbc:script location="classpath:createdb.sql" />
JUnit測試的情況是:
@ContextConfiguration(locations="classpath:test-context.xml")
@Transactional
public class GenericDaoImplTest extends AbstractTransactionalJUnit4SpringContextTests {
@Autowired
private GenericDao<Address, Long> addressDao;
@Test
public void testAddressCreate() {
Address address = new Address();
address.setAddress1("first address");
address.setCity("First City");
address.setCountry("First one");
address.setPostalCode("22222");
boolean result = addressDao.create(address);
Assert.assertEquals(true, result);
List<Address> listOfAddress = addressDao.findAll();
Assert.assertNotNull(listOfAddress);
for(Address addressTemp : listOfAddress){
System.out.println(addressTemp.getAddress1());
System.out.println(addressTemp.getAddressId());
}
}
@Test
public void testAddressUpdate(){
Address address = new Address();
address.setAddress1("second address");
address.setCity("Second City");
address.setCountry("Second one");
address.setPostalCode("11111");
boolean result = addressDao.create(address);
Assert.assertEquals(true, result);
address.setAddress1("Updated Second Address");
Assert.assertNotNull(addressDao.update(address));
List<Address> listOfAddress = addressDao.findAll();
Assert.assertNotNull(listOfAddress);
for(Address addressTemp : listOfAddress){
System.out.println(addressTemp.getAddress1());
System.out.println(addressTemp.getAddressId());
}
}
}
也有一些是你的代碼錯誤或配置......沒有人可以告訴你,沒有你提供的代碼。 – Raedwald
@Raedwald我已經添加了代碼和jdbc配置。 – Icoder
這是不是一個真正的測試,除非你的測試是一個簡單的是否可以創建地址的情況下,應用了setter方法測試,以及創建和更新及的findAll()方法不爆炸。你對你的方法的行爲一無所知。 – MetroidFan2002