日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Spring整合Junit單元測試

作者:趙同學& 更新時間: 2023-07-07 編程語言

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

  • 上一篇:沒有了
  • 下一篇:沒有了
欄目分類
最近更新