-
配置依賴
檔案名:pom.xml(部分)
<!-- Spring 單元測試,需要JUint -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.1.1.RELEASE</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope><!-- 表示開發的時候引入,釋出的時候不會加載此包 -->
</dependency>
-
建立與src同級的測試源碼目錄 (test),編寫測試基類。
BastTest類負責加載配置檔案,設定事務等。之後的所有測試類都可以直接繼承此類,就不需要每次都加載配置檔案。
檔案名:BaseTest.java
package com.spz.spzblog.test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.transaction.TransactionConfiguration;
import org.springframework.transaction.annotation.Transactional;
/**
* 測試基類
*/
@RunWith(SpringJUnit4ClassRunner.class) //使用Spring實作的測試執行類
@ContextConfiguration({"/spring/*.xml","/mybatis/*.xml"}) //加載配置檔案
//@Transactional
//@TransactionConfiguration(transactionManager = "transactionManager",defaultRollback = true)
public class BaseTest {
}
Transactional和TransactionConfiguration注解使得資料庫資料不會被測試程式污染。如果在測試基類中不配置這兩個注解,則需要給需要事務管理的測試方法添加事務注解。
檔案名:UserTest.java
package com.spz.spzblog.test.usertest;
import com.spz.spzblog.po.User;
import com.spz.spzblog.service.UserService;
import com.spz.spzblog.test.BaseTest;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.annotation.Rollback;
import org.springframework.transaction.annotation.Transactional;
/**
* 使用者相關測試
*/
public class UserTest extends BaseTest{
@Autowired
private UserService userServiceImpl;
@Test
@Transactional//啟用事務
@Rollback(true)//方法結束自動復原,false為不復原
public void aa()throws Exception{
User user = new User();
user.setUser_name("spz");
user.setUser_pass("123");
user = userServiceImpl.getUser(user);//此方法會通路資料庫
if(user != null){//搜尋到該使用者
System.out.println("I find it:" + user.getUser_name());
}else{
System.out.println("Error!");
}
}
}
環境:
SpringMVC、Spring、Mybatis、Maven、IntelliJ IDEA、JDK1.8
Spring項目使用JUint進行單元測試的缺點:
http://blog.csdn.net/shan9liang/article/details/40452469參考