Spring整合Junit单元测试

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);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用提供了一个包含JUnit单元测试的POM文件的示例。在这个示例中,需要在pom.xml文件中添加JUnitSpring Boot的相关依赖。具体步骤如下: 1. 在dependencies标签中添加JUnitSpring Boot的依赖: ```xml <dependencies> <!-- JUnit依赖 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <!-- Spring Boot依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- 其他依赖 --> </dependencies> ``` 2. 确保pom.xml文件中已经包含了JUnitSpring Boot的父依赖: ```xml <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.3</version> </parent> ``` 3. 确保项目的Java版本已经正确配置: ```xml <properties> <java.version>1.8</java.version> </properties> ``` 这样,你就可以在你的项目中使用JUnit进行单元测试了。请根据你的实际需求和项目的配置进行相应的修改和调整。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [如何使用JUnit进行单元测试](https://blog.csdn.net/weixin_45905210/article/details/121356067)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Springboot整合Junit单元测试](https://blog.csdn.net/weixin_42352733/article/details/121905763)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值