Spring 单元测试(Junit)

简介: Spring 单元测试(Junit)


  • 单元测试(Unit Test),是一段自动化的代码,用来调动被测试的方法,而后验证基于该方法或类的逻辑行为的一些假设。单元测试几乎总是用单元测试框架来写的。它写起来很顺手,运行起来不费时。它是全自动的、可信赖的、可读性强的和可维护的。
  • 和数据库相关的单元测试,可以设定自动回滚机制,不给数据库造成脏数据。或者对单元测试产生的数据有明确的前后缀标识。

在Spring的框架下,单元测试方法。

  1. 手动加载Spring的配置文件,并启动Spring容器
  2. 使用Spring中对Junit框架的整合功能

前提:

除了Junit4和Spring的jar包,还需要spring-test.jar

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-test</artifactId>
    <version>3.1.1.RELEASE</version>
</dependency>

方法一:

  1. 注解加载配置文件
private AreaService service;
protected ApplicationContext context;
@Before
public void init(){
  //context = new FileSystemXmlApplicationContext( new String[]{"classpath:applicationContext.xml" ,"classpath:mybatis-config.xml"});
  context = new ClassPathXmlApplicationContext("spring/applicationContext.xml");
  service = (AreaService) context.getBean("areaService");
}
@Test
public void Test(){
  service.query();
}
  1. 静态代码块加载配置文件
private AreaService service;
//静态代码块加载
static{
  //context = new FileSystemXmlApplicationContext("applicationContext.xml");
  //context = new ClassPathXmlApplicationContext(new String[]{"classpath:applicationContext.xml","classpath:/spring/application*.xml"});
  ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
  service = (AreaService) context.getBean("areaService");
}
//main方法执行测试
@SuppressWarnings("resource")
public static void main(String[] args) {
    try {
    service.do();
  } catch (BizException e){
    e.printStackTrace();
  }
}
  1. main函数中执行spring的代码
    脱离Tomcat容器在单独的java application的main函数中初始化spring
public static void main(String[] args){
  //手动加载spring的配置文件,并启动spring容器
  /*GenericXmlApplicationContext context = new GenericXmlApplicationContext();
  context.setValidating(false);
  context.load("classpath*:applicationContext*.xml");
  context.refresh();*/
  ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
  //context.start();
  ReadDao fqa = (ReadDao) context.getBean("readDao");
  fqa.do();
}

方法二: 全注解

@RunWith(SpringJUnit4ClassRunner.class)
//@ContextConfiguration需要配上spring的配置文件,这样就可以在测试类中使用注解简单的注入需要的bean了。简单高效。
@ContextConfiguration({"classpath:applicationContext.xml"})
public class ReadDaoImplTest{
  @Autowired
  private AreaService areaService;
  @Resource
  private ReadDao readDao;
  @Test
  public void test(){
    areaService.query();
  }
  @Test
  public void getListTest(){
    List<Client> clientList = readDao.getList("client.test",null);    
    for(Client c:clientList){
      System.out.println(c.getVersionNum());
      try {
        // 断言:判断z==6,
        assertEquals(6, z);
        //断言:判断z<3
        assertTrue(z<3);
      } catch (BizException e) {
        e.printStackTrace();
      }
    }
  }
}

解释下用到的注解:

@RunWith:用于指定junit运行环境

@ContextConfiguration:用于指定spring配置环境

@TransactionConfiguration:用于配置事务

@Transactional表示所有类下所有方法都使用事务


相关文章
|
6月前
|
Java 测试技术 Spring
【SpringFramework】Spring整合JUnit
本文简述Spring整合JUnit单元测试组件的通用方法,可以简化Spring框架测试。
200 14
|
9月前
|
Java 测试技术 开发者
必学!Spring Boot 单元测试、Mock 与 TestContainer 的高效使用技巧
【10月更文挑战第18天】 在现代软件开发中,单元测试是保证代码质量的重要手段。Spring Boot提供了强大的测试支持,使得编写和运行测试变得更加简单和高效。本文将深入探讨Spring Boot的单元测试、Mock技术以及TestContainer的高效使用技巧,帮助开发者提升测试效率和代码质量。
801 2
|
6月前
|
Java 测试技术 应用服务中间件
Spring Boot 如何测试打包部署
本文介绍了 Spring Boot 项目的开发、调试、打包及投产上线的全流程。主要内容包括: 1. **单元测试**:通过添加 `spring-boot-starter-test` 包,使用 `@RunWith(SpringRunner.class)` 和 `@SpringBootTest` 注解进行测试类开发。 2. **集成测试**:支持热部署,通过添加 `spring-boot-devtools` 实现代码修改后自动重启。 3. **投产上线**:提供两种部署方案,一是打包成 jar 包直接运行,二是打包成 war 包部署到 Tomcat 服务器。
137 10
|
8月前
|
Java 测试技术 API
详解Swagger:Spring Boot中的API文档生成与测试工具
详解Swagger:Spring Boot中的API文档生成与测试工具
460 4
|
9月前
|
存储 人工智能 Java
将 Spring AI 与 LLM 结合使用以生成 Java 测试
AIDocumentLibraryChat 项目通过 GitHub URL 为指定的 Java 类生成测试代码,支持 granite-code 和 deepseek-coder-v2 模型。项目包括控制器、服务和配置,能处理源代码解析、依赖加载及测试代码生成,旨在评估 LLM 对开发测试的支持能力。
270 1
|
8月前
|
Java 测试技术 数据库连接
使用Spring Boot编写测试用例:实践与最佳实践
使用Spring Boot编写测试用例:实践与最佳实践
388 0
|
10月前
|
JavaScript 前端开发 Java
Spring Boot+cucumber+契约测试
Spring Boot+cucumber+契约测试
125 0
Spring Boot+cucumber+契约测试
|
10月前
|
Java 数据库连接 数据格式
【Java笔记+踩坑】Spring基础2——IOC,DI注解开发、整合Mybatis,Junit
IOC/DI配置管理DruidDataSource和properties、核心容器的创建、获取bean的方式、spring注解开发、注解开发管理第三方bean、Spring整合Mybatis和Junit
【Java笔记+踩坑】Spring基础2——IOC,DI注解开发、整合Mybatis,Junit
|
11月前
|
测试技术 Java Spring
Spring 框架中的测试之道:揭秘单元测试与集成测试的双重保障,你的应用真的安全了吗?
【8月更文挑战第31天】本文以问答形式深入探讨了Spring框架中的测试策略,包括单元测试与集成测试的有效编写方法,及其对提升代码质量和可靠性的重要性。通过具体示例,展示了如何使用`@MockBean`、`@SpringBootTest`等注解来进行服务和控制器的测试,同时介绍了Spring Boot提供的测试工具,如`@DataJpaTest`,以简化数据库测试流程。合理运用这些测试策略和工具,将助力开发者构建更为稳健的软件系统。
137 0
|
1月前
|
Java 测试技术 容器
Jmeter工具使用:HTTP接口性能测试实战
希望这篇文章能够帮助你初步理解如何使用JMeter进行HTTP接口性能测试,有兴趣的话,你可以研究更多关于JMeter的内容。记住,只有理解并掌握了这些工具,你才能充分利用它们发挥其应有的价值。+
293 23