1.Spring整合Junit單元測試
1.1 原始Junit測試Spring的問題
在測試類中,每個測試方法都有以下兩行代碼:
ApplicationContext ac = new ClassPathXmlApplicationContext("application.xml");
BookDao bookDao =(BookDao)ac.getBean("bookDao");
這兩行代碼的作用是獲取容器,如果不寫的話,直接會提示空指針異常。所以又不能輕易刪掉。
1.2 上述問題解決思路
讓SpringJunit負責(zé)創(chuàng)建Spring容器,但是需要將配置文件的名稱告訴它
將需要進行測試Bean直接在測試類中進行注入
1.3 Spring集成Junit步驟
①導(dǎo)入spring集成Junit的坐標
②使用@Runwith注解替換原來的運行期
③使用@ContextConfiguration指定配置文件或配置類
④使用@Autowired注入需要測試的對象
⑤創(chuàng)建測試方法進行測試
【第一步】導(dǎo)入整合的依賴坐標spring-test
<!--junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!--spring整合junit-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.1.9.RELEASE</version>
</dependency>
【第二,三,四步】加載配置文件或者配置類
//【第二步】使用Spring整合Junit專用的類加載器
@RunWith(SpringJUnit4ClassRunner.class)
//【第三步】加載配置文件或者配置類
@ContextConfiguration(classes = {SpringConfiguration.class}) //加載配置類
//@ContextConfiguration(locations={"classpath:applicationContext.xml"})//加載配置文件
public class AccountServiceTest {
//支持自動裝配注入bean
@Autowired
private AccountService accountService;
?
@Test
public void testFindById(){
System.out.println(accountService.findById(1));
}
?
@Test
public void testFindAll(){
System.out.println(accountService.findAll());
}
}
注意:junit的依賴至少要是4.12版本,可以是4.13等版本,否則出現(xiàn)如下異常:
1.4 junit斷言測試:
JUnit為所有原語類型、對象和數(shù)組(原語或?qū)ο螅┨峁┲剌d斷言方法。參數(shù)順序為預(yù)期值后接實際值。或者,第一個參數(shù)可以是失敗時輸出的字符串消息。
2.1 斷言的方法:
void assertEquals(String message, expected value, actual value) | 斷言兩個值相等。值可能是類型有 int, short, long, byte, char ,Object. 第一個參數(shù)是一個可選的字符串消息 如果預(yù)期值與真實值相等,則運行success,反之Failure |
---|---|
void assertTrue(String message, boolean condition) | 斷言一個條件為真 |
void assertFalse(String message,boolean condition) | 斷言一個條件為假 |
assertTrue(String message, expected value, actual value) | 如果為 true,則運行 success,反之 Failure |
2.2 入門例子
String str="abcde";
String str1="abcde";
assertEquals(str,str1);
assertTrue(str.startsWith("ab"));
assertTrue(str.endsWith("de"));
//list集合操作斷言
List<String> list= Arrays.asList("a","b","c","d");
System.out.println(list.toString());
assertEquals("a",list.get(0));
assertEquals(4,list.size());
assertEquals("d",list.get(list.size()-1));
//集合操作斷言
Map<String,Object> map=new HashMap<>();
map.put("A", 1);
map.put("B", 2);
map.put("C", 3);
Set<String> set = map.keySet();
//assertEquals 如果預(yù)期值與真實值相等,則運行success,反之Failure
//assertEquals 運行Failure會有錯誤提示,提示預(yù)期值是xxx,而實際值是xxx。容易調(diào)式
assertEquals(3, map.size());
//檢查是否包含A B C
//assertTrue 如果為 true,則運行 success,反之 Failure
assertTrue(set.containsAll(Arrays.asList("A", "B", "C")));
2.3案例操作dao
查詢所有斷言測試
第一步:在測試類里面注入Dao對象
@Autowired
private AccountDao accountDao;
第二步:構(gòu)建測試方法
@Test
public void testDaofindAll(){
System.out.println("測試查詢所有");
assertEquals(2,accountDao.findAll().size());
}
添加操作斷言測試
構(gòu)建測試方法文章來源:http://www.zghlxwxcb.cn/news/detail-519104.html
@Test
@Rollback
public void testDaoadd(){
Account account=new Account();
account.setId(null);
account.setName("測試新增");
account.setMoney("12345");
assertEquals(1,accountDao.save(account));
}
刪除操作斷言測試
構(gòu)建測試方法
@Test
public void testDel(){
System.out.println("斷言測試刪除");
assertEquals(1,accountDao.delete(3));
}
案例導(dǎo)入文章來源地址http://www.zghlxwxcb.cn/news/detail-519104.html
// 直接在service查詢里面構(gòu)建就可以
?
assumeTrue("結(jié)果不是false",false);
assumeFalse("結(jié)果不是true",false);
到了這里,關(guān)于Spring整合Junit單元測試的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!