UserDAOTest.java
packagecom.ali.amoeba.brmmstest;
importjava.util.Arrays;
importjava.util.List;
importorg.junit.Ignore;
importorg.junit.Test;
importorg.springframework.context.ConfigurableApplicationContext;
importorg.springframework.context.support.ClassPathXmlApplicationContext;
importorg.unitils.UnitilsJUnit4;
importorg.unitils.database.annotations.Transactional;
importorg.unitils.database.util.TransactionMode;
importorg.unitils.dbunit.annotation.DataSet;
importorg.unitils.dbunit.annotation.ExpectedDataSet;
importorg.unitils.dbunit.datasetloadstrategy.impl.CleanInsertLoadStrategy;
importorg.unitils.dbunit.datasetloadstrategy.impl.InsertLoadStrategy;
importorg.unitils.reflectionassert.ReflectionAssert;
importorg.unitils.spring.annotation.SpringApplicationContext;
importorg.unitils.spring.annotation.SpringBeanByType;
importcom.ali.amoeba.brmmstest.dao.AmoebaDao;
importcom.ali.amoeba.brmmstest.dataobject.User;
importorg.junit.runner.RunWith;
importorg.unitils.UnitilsJUnit4TestClassRunner;
@RunWith(UnitilsJUnit4TestClassRunner.class)
@SpringApplicationContext({"classpath:resources/test-common.xml"})
publicclassUserDAOTest {// extends UnitilsJUnit4 {
/*用标注或者overwrite createApplicationContext方法都可以
@SpringApplicationContext
public ConfigurableApplicationContext createApplicationContext() {
return new ClassPathXmlApplicationContext(new String[]{"classpath:resources/test-common.xml"});
}
*/
//从配置文件里面读取spring bean的数据源
protectedAmoebaDaouserDao;
@SpringBeanByType
publicvoidsetAmoebaDao(AmoebaDao userDao) {
this.userDao= userDao;
}
@Test
@DataSet(loadStrategy = CleanInsertLoadStrategy.class)
@ExpectedDataSet
publicvoidtestFindByName() {
User user=newUser();
user.setFirst("doe");
user.setLast("john");
User result =userDao.findByName(user);
System.out.println(result);
ReflectionAssert.assertPropertyLenEquals("first","doe", result);
}
@Transactional(TransactionMode.COMMIT)
@Test
publicvoidtestInsertUser() {
User user=newUser();
user.setId(7777);
user.setFirst("good");
user.setLast("xxxx");
user.setAge(31);
userDao.insertUser(user);
}
//用一个xml数据源数据存储到db,过滤部分数据.然后与预定的另外一部分数据对比
//达到数据可控
//每次做之前该表数据都清空
@Test
@DataSet("UserDAOTest.testFindByMinimalAge.xml")
@ExpectedDataSet("UserDAOTest.testFindByName-result.xml")
publicvoidtestFindByMinimalAge() {
List<User> result =userDao.findByMinimalAge(18);
ReflectionAssert.assertPropertyLenEquals("first", Arrays.asList("methodDataset"), result);
}
}
UserDAOTest.xml内容都形如:
<?xmlversion='1.0'encoding='UTF-8'?>
<dataset>
<userid="11" first="doe" last="john" age="20"/>
<userid="1" first="good" last="bad" age="10"/>
</dataset>