網(wǎng)站首頁 編程語言 正文
1.Spring整合Junit單元測試
1.1 原始Junit測試Spring的問題
在測試類中,每個測試方法都有以下兩行代碼:
ApplicationContext ac = new ClassPathXmlApplicationContext("application.xml");
BookDao bookDao =(BookDao)ac.getBean("bookDao");
這兩行代碼的作用是獲取容器,如果不寫的話,直接會提示空指針異常。所以又不能輕易刪掉。
1.2 上述問題解決思路
讓SpringJunit負(fù)責(zé)創(chuàng)建Spring容器,但是需要將配置文件的名稱告訴它
將需要進(jìn)行測試Bean直接在測試類中進(jìn)行注入
1.3 Spring集成Junit步驟
①導(dǎo)入spring集成Junit的坐標(biāo)
②使用@Runwith注解替換原來的運(yùn)行期
③使用@ContextConfiguration指定配置文件或配置類
④使用@Autowired注入需要測試的對象
⑤創(chuàng)建測試方法進(jìn)行測試
【第一步】導(dǎo)入整合的依賴坐標(biā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ù)期值與真實值相等,則運(yùn)行success,反之Failure |
---|---|
void assertTrue(String message, boolean condition) | 斷言一個條件為真 |
void assertFalse(String message,boolean condition) | 斷言一個條件為假 |
assertTrue(String message, expected value, actual value) | 如果為 true,則運(yùn)行 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ù)期值與真實值相等,則運(yùn)行success,反之Failure
//assertEquals 運(yùn)行Failure會有錯誤提示,提示預(yù)期值是xxx,而實際值是xxx。容易調(diào)式
assertEquals(3, map.size());
//檢查是否包含A B C
//assertTrue 如果為 true,則運(yùn)行 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)建測試方法
@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)入
// 直接在service查詢里面構(gòu)建就可以
?
assumeTrue("結(jié)果不是false",false);
assumeFalse("結(jié)果不是true",false);
原文鏈接:https://blog.csdn.net/qq_52963857/article/details/131538721
- 上一篇:沒有了
- 下一篇:沒有了
相關(guān)推薦
- 2022-12-14 C++?Boost?shared_ptr共享指針詳細(xì)講解_C 語言
- 2023-04-18 spark?dataframe全局排序id與分組后保留最大值行_python
- 2023-03-27 Android?BroadcastReceiver傳輸機(jī)制詳解_Android
- 2022-09-27 linux?shell中Grep命令查找多個字符串(grep同時匹配多個關(guān)鍵字或任意關(guān)鍵字)_lin
- 2022-11-02 Golang實現(xiàn)多存儲驅(qū)動設(shè)計SDK案例_Golang
- 2023-11-23 python怎么判斷電腦環(huán)境是32位還是64位
- 2022-01-10 解決遮罩下方元素禁止?jié)L動
- 2022-08-05 Python?如何給圖像分類(圖像識別模型構(gòu)建)_python
- 欄目分類
-
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支