Spring第四 spring整合Junit
3 Spring整合junit
3.1 原始Junit測試spring的問題
原始junit測試Spring的問題,在測試類中,每個測試方法都有以下兩行程式碼:
@Test
public void Test(){
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
UserService us= ac.getBean("UserService"UserService.class);
}
這兩行程式碼的作用是獲取容器,如果不寫的話,直接會提示空指標異常。所以又不能輕易刪掉。
上述問題解決思路•讓SpringJunit負責建立Spring容器,但是需要將配置檔案的名稱告訴它•將需要進行測試Bean直接在測試類中進行注入
3.2 Spring 整合Junit
Spring整合Junit步驟
①匯入spring整合Junit的座標以及junit的座標(之前測試已導)
②使用@Runwith註解替換原來的執行期
③使用@ContextConfiguration指定配置檔案或配置類
④使用@Autowired注入需要測試的物件
⑤建立測試方法進行測試
(第一步)匯入spring整合Junit的座標<!--此處需要注意的是,spring5 及以上版本要求junit 的版本必須是4.12 及以上-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
(第二步)使用@Runwith註解替換原來的執行期@RunWith(SpringJUnit4ClassRunner.class)
public class SpringJunitTest {}
(第三步)使用@ContextConfiguration指定配置檔案或配置類@RunWith(SpringJUnit4ClassRunner.class)
//載入spring核心配置檔案
//@ContextConfiguration(value = {"classpath:applicationContext.xml"})
//載入spring核心配置類@
ContextConfiguration(classes = {SpringConfiguration.class})
public class SpringJunitTest {}
(第四步)使用@Autowired注入需要測試的物件@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {SpringConfiguration.class})
public class SpringJunitTest {
@Autowiredprivate UserService userService;
(第五步)寫測試方法
@Test
public void testUserService(){
userService.save();}
}