編寫 UserService 的測試用例
下面我們為 UserService 編寫一個簡單的測試用例類此時的目標是讓這個基於 TestContext 測試框架的測試類運行起來我們將在後面逐步完善這個測試用例
清單TestUserServicejava: 基於注解的測試用例
package combaobaotaoservice; import orgsprintextjunit AbstractTransactionalJUnitSpringContextTests; import orgsprintextContextConfiguration; import orgspringframeworkbeansfactoryannotationAutowired; import orgjunitTest; import combaobaotaodomainUser; import javautilDate; @ContextConfiguration //① public class TestUserService extends AbstractTransactionalJUnitSpringContextTests { @Autowired //② private UserService userService; @Test //③ public void handleUserLogin(){ User user = new User(); usersetUserId(); usersetLastIp(); Date now = new Date(); usersetLastVisit(nowgetTime()); userServicehandleUserLogin(user); } }
這裡我們讓 TestUserService 直接繼承於 Spring 所提供的 AbstractTransactionalJUnitSpringContextTests 的抽象測試類稍後本文將對這個抽象測試類進行剖析這裡你僅須知道該抽象測試類的作用是讓 TestContext 測試框架可以在 JUnit 測試框架基礎上運行起來就可以了
在 ① 處標注了一個類級的 @ContextConfiguration 注解這裡 Spring 將按 TestContext 契約查找 classpath:/com/baobaotao/service/TestUserServicecontextxml 的 Spring 配置文件並使用該配置文件啟動 Spring 容器@ContextConfiguration 注解有以下兩個常用的屬性:
locations:可以通過該屬性手工指定 Spring 配置文件所在的位置可以指定一個或多個 Spring 配置文件如下所示:
@ContextConfiguration(locations={xx/yy/beansxml xx/yy/beansxml})
inheritLocations:是否要繼承父測試用例類中的 Spring 配置文件默認為 true如下面的例子:
@ContextConfiguration(locations={basecontextxml}) public class BaseTest { // } @ContextConfiguration(locations={extendedcontextxml}) public class ExtendedTest extends BaseTest { // }
如果 inheritLocations 設置為 false則 ExtendedTest 僅會使用 extendedcontextxml 配置文件否則將使用 basecontextxml 和 extendedcontextxml 這兩個配置文件
② 處的 @Autowired 注解讓 Spring 容器自動注入 UserService 類型的 Bean而在 ③ 處標注的 @Test 注解則讓 handleUserLogin() 方法成為一個 JUnit 標准的測試方法 @Test 是 JUnit 所定義的注解
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28283.html