spring 4.0 JUnit简单的Dao,Service测试
1.AbstractTransactionalJUnit4SpringContextTests 和AbstractJUnit4SpringContextTests。我們在測試用例類要繼承兩種中的一個。
AbstractTransactionalJUnit4SpringContextTests提供了數(shù)據(jù)庫自動回滾,也就是說測試前和測試后數(shù)據(jù)庫是一樣的
AbstractJUnit4SpringContextTests不提供數(shù)據(jù)庫自動回滾,測試會破壞數(shù)據(jù)庫。
查看源碼發(fā)現(xiàn),AbstractTransactionalJUnit4SpringContextTests就是繼承自AbstractJUnit4SpringContextTests,同時類上面多了兩個Annotation:@TestExecutionListeners(TransactionalTestExecutionListener.class) 和@Transactional。所以實現(xiàn)數(shù)據(jù)庫回滾有兩種方法,如下:
?public class BasicTest extends AbstractTransactionalJUnit4SpringContextTests {}?
和
@TestExecutionListeners(TransactionalTestExecutionListener.class) @Transactional public class BasicTest extends AbstractJUnit4SpringContextTests { }好吧,說了這么多沒用的還不如直接上代碼
為了避免每個測試用例都要配置spring環(huán)境,先建立一個父類:BasicTest,內(nèi)容很簡單,真的很簡單:
@ContextConfiguration(locations= {"classpath:spring/applicationContext.xml","classpath:spring/spring-servlet.xml"}) public class BasicTest extends AbstractTransactionalJUnit4SpringContextTests {} @ContextConfiguration:顧名思義就是配置context配置文件的地址,我這里是Web程序,所以還要spring-servlet.xml。網(wǎng)上的例子都有@RunWith注解,但是我發(fā)現(xiàn) AbstractJUnit4SpringContextTests 類上已經(jīng)有了@RunWith,那么這里就不需要了。只要配置@ContextConfiguration就可以了
然后測試用例繼承BasicTest如下: 具體的測試方法怎么寫就不用說了。
public class PeopleServiceTest extends BasicTest{@Resource(name="PeopleService")private PeopleService ps;@Testpublic void queryAll() {List<People> list=ps.queryAll(null);System.out.println(list);Assert.assertEquals("list沒有10個", 10, list.size());}@Testpublic void update() {People p=new People().set("id", 29).set("name", "tom").set("address", "").set("age", 10);Assert.assertEquals("沒有修改", 1, this.ps.update(p));}@Testpublic void insert() {People p=new People().set("name", "Mike").set("address", "america").set("age", 10);Assert.assertEquals("沒有插入", 1, this.ps.add(p));} }
?
??
轉(zhuǎn)載于:https://www.cnblogs.com/formyjava/p/4595037.html
總結(jié)
以上是生活随笔為你收集整理的spring 4.0 JUnit简单的Dao,Service测试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 淘宝跨域获取Cookie分析
- 下一篇: 机器学习(Machine Learnin