[Spring] Spring Test结合JUnit的单元测试

简介: 配置依赖文件名:pom.xml(部分) org.springframework spring-test 4.1.1.RELEASE test junit junit 4.11 test建立与src同级的测试源码目录 (test),编写测试基类。
  1. 配置依赖
    文件名:pom.xml(部分)
<!-- Spring 单元测试,需要JUint -->
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-test</artifactId>
  <version>4.1.1.RELEASE</version>
  <scope>test</scope>
</dependency>
<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.11</version>
  <scope>test</scope><!-- 表示开发的时候引入,发布的时候不会加载此包 -->
</dependency>
  1. 建立与src同级的测试源码目录 (test),编写测试基类。
    BastTest类负责加载配置文件,设置事务等。之后的所有测试类都可以直接继承此类,就不需要每次都加载配置文件。
    文件名:BaseTest.java
package com.spz.spzblog.test;

import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.transaction.TransactionConfiguration;
import org.springframework.transaction.annotation.Transactional;

/**
 * 测试基类
 */
@RunWith(SpringJUnit4ClassRunner.class) //使用Spring实现的测试执行类
@ContextConfiguration({"/spring/*.xml","/mybatis/*.xml"}) //加载配置文件
//@Transactional
//@TransactionConfiguration(transactionManager = "transactionManager",defaultRollback = true)
public class BaseTest {

}

Transactional和TransactionConfiguration注解使得数据库数据不会被测试程序污染。如果在测试基类中不配置这两个注解,则需要给需要事务管理的测试方法添加事务注解。
文件名:UserTest.java

package com.spz.spzblog.test.usertest;

import com.spz.spzblog.po.User;
import com.spz.spzblog.service.UserService;
import com.spz.spzblog.test.BaseTest;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.annotation.Rollback;
import org.springframework.transaction.annotation.Transactional;

/**
 * 用户相关测试
 */
public class UserTest extends BaseTest{

    @Autowired
    private UserService userServiceImpl;

    @Test
    @Transactional//启用事务
    @Rollback(true)//方法结束自动回滚,false为不回滚
    public void aa()throws Exception{
        User user = new User();
        user.setUser_name("spz");
        user.setUser_pass("123");
        user = userServiceImpl.getUser(user);//此方法会访问数据库
        if(user != null){//搜索到该用户
            System.out.println("I find it:" + user.getUser_name());
        }else{
            System.out.println("Error!");
        }
    }
}

环境:
SpringMVC、Spring、Mybatis、Maven、IntelliJ IDEA、JDK1.8
Spring项目使用JUint进行单元测试的缺点:
http://blog.csdn.net/shan9liang/article/details/40452469
参考
http://blog.csdn.net/shan9liang/article/details/40452469

相关文章
|
1月前
|
XML Java 测试技术
Spring5入门到实战------17、Spring5新功能 --Nullable注解和函数式注册对象。整合JUnit5单元测试框架
这篇文章介绍了Spring5框架的三个新特性:支持@Nullable注解以明确方法返回、参数和属性值可以为空;引入函数式风格的GenericApplicationContext进行对象注册和管理;以及如何整合JUnit5进行单元测试,同时讨论了JUnit4与JUnit5的整合方法,并提出了关于配置文件加载的疑问。
Spring5入门到实战------17、Spring5新功能 --Nullable注解和函数式注册对象。整合JUnit5单元测试框架
|
8天前
|
JavaScript 前端开发 Java
Spring Boot+cucumber+契约测试
Spring Boot+cucumber+契约测试
7 0
Spring Boot+cucumber+契约测试
|
8天前
|
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
|
30天前
|
测试技术
单元测试问题之使用TestMe时利用JUnit 5的参数化测试特性如何解决
单元测试问题之使用TestMe时利用JUnit 5的参数化测试特性如何解决
21 2
|
30天前
|
Java 测试技术 Maven
单元测试问题之在Maven项目中引入JUnit 5和Mockito的依赖如何解决
单元测试问题之在Maven项目中引入JUnit 5和Mockito的依赖如何解决
91 1
|
20天前
|
测试技术 Java Spring
Spring 框架中的测试之道:揭秘单元测试与集成测试的双重保障,你的应用真的安全了吗?
【8月更文挑战第31天】本文以问答形式深入探讨了Spring框架中的测试策略,包括单元测试与集成测试的有效编写方法,及其对提升代码质量和可靠性的重要性。通过具体示例,展示了如何使用`@MockBean`、`@SpringBootTest`等注解来进行服务和控制器的测试,同时介绍了Spring Boot提供的测试工具,如`@DataJpaTest`,以简化数据库测试流程。合理运用这些测试策略和工具,将助力开发者构建更为稳健的软件系统。
29 0
|
1月前
|
Java 测试技术 Maven
Junit单元测试 @Test的使用教程
这篇文章是一个关于Junit单元测试中`@Test`注解使用的教程,包括在Maven项目中添加Junit依赖、编写带有@Test注解的测试方法,以及解决@Test注解不生效的常见问题。
|
1月前
|
前端开发 Java 测试技术
单元测试问题之在Spring MVC项目中添加JUnit的Maven依赖,如何操作
单元测试问题之在Spring MVC项目中添加JUnit的Maven依赖,如何操作
|
1月前
|
Java 测试技术
Java SpringBoot Test 单元测试中包括多线程时,没跑完就结束了
Java SpringBoot Test 单元测试中包括多线程时,没跑完就结束了
23 0
|
1月前
|
Java 测试技术 开发者
在软件开发中,测试至关重要,尤以单元测试和集成测试为然
在软件开发中,测试至关重要,尤以单元测试和集成测试为然。单元测试聚焦于Java中的类或方法等最小单元,确保其独立功能正确无误,及早发现问题。集成测试则着眼于模块间的交互,验证整体协作效能。为实现高效测试,需编写可测性强的代码,并选用JUnit等合适框架。同时,合理规划测试场景与利用Spring等工具也必不可少。遵循最佳实践,可提升测试质量,保障Java应用稳健前行。
33 1