Spring整合Junit单元测试

这篇具有很好参考价值的文章主要介绍了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等版本,否则出现如下异常:
Spring整合Junit单元测试,spring,spring,junit,单元测试

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));
}

案例导入文章来源地址https://www.toymoban.com/news/detail-519104.html

// 直接在service查询里面构建就可以assumeTrue("结果不是false",false);
assumeFalse("结果不是true",false);

到了这里,关于Spring整合Junit单元测试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring Boot使用JUnit和Mockito进行Service层单元测试

      在平时的开发当中,一个项目往往包含了大量的方法,可能有成千上万个。如何去保证这些方法产生的结果是我们想要的呢?那么在SpringBoot项目中我们是如何对Service层的方法进行测试的呢?   单元测试是一种软件测试方法,用于测试代码的最小可测试单元。在Java开发

    2024年02月03日
    浏览(52)
  • 单元测试-spring-boot-starter-test+junit5

    开发过程中经常需要写单元测试,记录一下单元测试spring-boot-starter-test+junit5的使用 引用jar包 可以对局部函数、方法进行调用测试 可以对API调用进行模拟测试

    2024年01月19日
    浏览(48)
  • Spring Boot与微服务测试:JUnit和Mockito的单元和集成测试实践

    微服务架构的流行使得测试变得更为重要。在Spring Boot应用中,使用JUnit和Mockito进行单元和集成测试是一种常见的实践。本文将深入探讨如何利用这两个测试框架,确保Spring Boot微服务的可靠性和稳定性。 单元测试 1.1 JUnit简介 JUnit是Java中最为流行的单元测试框架之一,它提供

    2024年02月21日
    浏览(50)
  • spring boot 单元测试JUnit5使用Mockito模拟Mock数据调用

    spring boot 单元测试JUnit5使用Mockito模拟Mock数据调用 好大一批新用法,大家静下心来好好看看吧 1. spring boot 使用 Mockito.when().thenReturn()模拟返回值 Mockito 是一种 Java mock 框架,他主要就是用来做 mock 测试的,他可以模拟任何 Spring 管理的 bean、模拟方法的返回值、模拟抛出异常…

    2024年02月15日
    浏览(55)
  • spring boot 单元测试JUnit5使用断言Assertions和假定Assumptions、嵌套、参数测试

    spring boot 单元测试JUnit5使用断言Assertions和假定Assumptions、嵌套、参数测试 本文基于spirng boot 2.7.11, 大家注意自己的版本 Spring Boot 2.2.0 版本开始引入 JUnit 5 作为单元测试默认库 SpringBoot 2.4 以上版本移除了默认对 Vintage 的依赖 源码地址:https://gitcode.net/qq_39339588/springboot.git 1.

    2024年02月11日
    浏览(47)
  • 【Spring6】| Spring6整合JUnit 一:Spring6整合JUnit

    目录 一:Spring6整合JUnit 1. Spring对JUnit4的支持 2. Spring对JUnit5的支持 1. Spring对JUnit4的支持 准备工作:pom.xml 注: 以前是直接使用单元测试Junit,现在使用Spring对Junit的整合! 声明Bean spring.xml配置 单元测试: ①以前的写法 ②使用Spring对Junit4的支持写法 (1)使用两个注解:

    2023年04月18日
    浏览(88)
  • 【Spring6】| Spring6整合JUnit 一:Spring6整合JUnit

    目录 一:Spring6整合JUnit 1. Spring对JUnit4的支持 2. Spring对JUnit5的支持 1. Spring对JUnit4的支持 准备工作:pom.xml 注: 以前是直接使用单元测试Junit,现在使用Spring对Junit的整合! 声明Bean spring.xml配置 单元测试: ①以前的写法 ②使用Spring对Junit4的支持写法 (1)使用两个注解:

    2023年04月20日
    浏览(70)
  • 【Spring框架】--04.单元测试JUnit、事务、资源操作Resources、国际化、数据校验Validation、提前编译AOT

    学习视频: 尚硅谷Spring教程 在之前的测试方法中,几乎都能看到以下的两行代码: 这两行代码的作用是创建Spring容器,最终获取到对象,但是每次测试都需要重复编写。针对上述问题,我们需要的是程序能自动帮我们创建容器。我们都知道JUnit无法知晓我们是否使用了 Spr

    2024年02月12日
    浏览(39)
  • Spring整合Mybatis、Spring整合JUnit

    🐌个人主页: 🐌 叶落闲庭 💨我的专栏:💨 c语言 数据结构 javaweb 石可破也,而不可夺坚;丹可磨也,而不可夺赤。 1.3.1jdbc配置文件 1.3.2jdbc配置类及spring配置类 1.3.3数据库操作类 1.3.4测试类 1.3.5运行结果 关于Spring整合的相关步骤就介绍完了,欢迎各位点赞+关注!!!

    2024年02月14日
    浏览(54)
  • [初学Spring Boot](2):单元测试报错:org.junit.runners.model.InvalidTestClassError:Invalid test class

    是建项目时自动生成的测试类,结果还是报错了。大无语事件。 就是IDEA自建测试时导错包了。  注释掉的时原来自导的,换成短的就好了。 经查证,长的是升级版,junit5,spring boot版本在2.2之后,方法不要public修饰; 短的,是旧版,junit4,spring boot版本在2.2之前,方法要用

    2024年02月07日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包