spring 4.0 JUnit簡單的Dao,Service測試


1.AbstractTransactionalJUnit4SpringContextTests 和AbstractJUnit4SpringContextTests。我們在測試用例類要繼承兩種中的一個。

AbstractTransactionalJUnit4SpringContextTests提供了數據庫自動回滾,也就是說測試前和測試后數據庫是一樣的

AbstractJUnit4SpringContextTests不提供數據庫自動回滾,測試會破壞數據庫。

查看源碼發現,AbstractTransactionalJUnit4SpringContextTests就是繼承自AbstractJUnit4SpringContextTests,同時類上面多了兩個Annotation:@TestExecutionListeners(TransactionalTestExecutionListener.class) 和@Transactional。所以實現數據庫回滾有兩種方法,如下:

 public class BasicTest extends AbstractTransactionalJUnit4SpringContextTests {} 

@TestExecutionListeners(TransactionalTestExecutionListener.class)
@Transactional
public class BasicTest extends AbstractJUnit4SpringContextTests {
}

好吧,說了這么多沒用的還不如直接上代碼

為了避免每個測試用例都要配置spring環境,先建立一個父類:BasicTest,內容很簡單,真的很簡單:

@ContextConfiguration(locations= {"classpath:spring/applicationContext.xml","classpath:spring/spring-servlet.xml"})
public class BasicTest extends AbstractTransactionalJUnit4SpringContextTests {

}
@ContextConfiguration:顧名思義就是配置context配置文件的地址,我這里是Web程序,所以還要spring-servlet.xml。
網上的例子都有@RunWith注解,但是我發現 AbstractJUnit4SpringContextTests 類上已經有了@RunWith,那么這里就不需要了。只要配置@ContextConfiguration就可以了

然后測試用例繼承BasicTest如下: 具體的測試方法怎么寫就不用說了。
public class PeopleServiceTest extends BasicTest{

    @Resource(name="PeopleService")
    private PeopleService ps;

    
    @Test
    public void queryAll() {
        List<People> list=ps.queryAll(null);
        System.out.println(list);
        Assert.assertEquals("list沒有10個", 10, list.size());
    }
    
    @Test
    public void update() {
        People p=new People().set("id", 29).set("name", "tom").set("address", "").set("age", 10);
        Assert.assertEquals("沒有修改", 1, this.ps.update(p));
    }
    @Test
    public void insert() {
        People p=new People().set("name", "Mike").set("address", "america").set("age", 10);
        Assert.assertEquals("沒有插入", 1, this.ps.add(p));
    }
}
 
        

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM