網站首頁 編程語言 正文
1.Spring整合Junit單元測試
1.1 原始Junit測試Spring的問題
在測試類中,每個測試方法都有以下兩行代碼:
ApplicationContext ac = new ClassPathXmlApplicationContext("application.xml");
BookDao bookDao =(BookDao)ac.getBean("bookDao");
這兩行代碼的作用是獲取容器,如果不寫的話,直接會提示空指針異常。所以又不能輕易刪掉。
1.2 上述問題解決思路
讓SpringJunit負責創建Spring容器,但是需要將配置文件的名稱告訴它
將需要進行測試Bean直接在測試類中進行注入
1.3 Spring集成Junit步驟
①導入spring集成Junit的坐標
②使用@Runwith注解替換原來的運行期
③使用@ContextConfiguration指定配置文件或配置類
④使用@Autowired注入需要測試的對象
⑤創建測試方法進行測試
【第一步】導入整合的依賴坐標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等版本,否則出現如下異常:
1.4 junit斷言測試:
JUnit為所有原語類型、對象和數組(原語或對象)提供重載斷言方法。參數順序為預期值后接實際值。或者,第一個參數可以是失敗時輸出的字符串消息。
2.1 斷言的方法:
void assertEquals(String message, expected value, actual value) | 斷言兩個值相等。值可能是類型有 int, short, long, byte, char ,Object. 第一個參數是一個可選的字符串消息 如果預期值與真實值相等,則運行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 如果預期值與真實值相等,則運行success,反之Failure
//assertEquals 運行Failure會有錯誤提示,提示預期值是xxx,而實際值是xxx。容易調式
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;
第二步:構建測試方法
@Test
public void testDaofindAll(){
System.out.println("測試查詢所有");
assertEquals(2,accountDao.findAll().size());
}
添加操作斷言測試
構建測試方法
@Test
@Rollback
public void testDaoadd(){
Account account=new Account();
account.setId(null);
account.setName("測試新增");
account.setMoney("12345");
assertEquals(1,accountDao.save(account));
}
刪除操作斷言測試
構建測試方法
@Test
public void testDel(){
System.out.println("斷言測試刪除");
assertEquals(1,accountDao.delete(3));
}
案例導入
// 直接在service查詢里面構建就可以
?
assumeTrue("結果不是false",false);
assumeFalse("結果不是true",false);
原文鏈接:https://blog.csdn.net/qq_52963857/article/details/131538721
- 上一篇:沒有了
- 下一篇:沒有了
相關推薦
- 2022-09-25 Redis時單線程設計的,為什么還這么快
- 2022-09-29 一文詳解Golang中net/http包的實現原理_Golang
- 2022-06-04 python對文檔中元素刪除,替換操作_python
- 2024-03-15 docker刪除、停止所有容器或鏡像
- 2022-03-08 SQL實現分頁查詢方法總結_數據庫其它
- 2022-06-13 Python基本數據類型及內置方法_python
- 2023-01-30 vite?+?react?+typescript?環境搭建小白入門教程_React
- 2022-10-16 安裝出現:Requirement?already?satisfied解決辦法_python
- 欄目分類
-
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支