SpringBoot实战:整合jUnit测试框架

SpringBoot实战:整合jUnit测试框架

  • 一、前言
  • 二、添加依赖
  • 三、简单业务代码
  • 四、创建测试类
  • 五、运行测试类
    • 1.单个方法或类的测试
    • 2.运行整个项目的测试方法
      • 2.1.使用IDEA运行整个项目的测试类
      • 2.2.使用maven命令运行整个项目的测试类
  • 六、注意事项与规范

一、前言

开发项目单元测试必不可少,而jUnit也是java中非常优秀的测试框架,现在简单实战总结一下SpringBoot如何整合jUnit测试框架。

二、添加依赖

在SpringBoot中使用jUnit单元测试前,需要先添加如下maven依赖,其中 test 表示该依赖仅用于测试阶段。

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-test</artifactId>
	<scope>test</scope>
</dependency>

三、简单业务代码

为了测试需要,我们先创建一个简单的业务代码,方便我们后续测试使用。
服务接口类:

public interface UpmsUserService {
	
	String getName(Long userId);

    int count();
}

服务实现类:

@Service("upmsUserService")
public class UpmsUserServiceImpl implements UpmsUserService {

	@Override
	public String getName(Long userId) {
		return "test"
	}

    @Override
    public int count() {
        return 1;
    }
}

按照以上的逻辑,getName方法返回的结果是“test”,count方法返回的是1,我们现在需要测试一下是否正确。

四、创建测试类

创建一个测试类很简单,测试类只需要在src地下的test中编写,一般来说,test的目录结果应该和main的结果保持一致,这样便于以后做测试管理。
这里我们使用IDEA来快速创建一个单元测试。

  1. 打开需要测试的业务类,单击右键选择Go To -> Test,或者使用快捷键Ctrl+Shift+T.
    SpringBoot实战:整合jUnit测试框架_第1张图片

  2. 没有创建测试类时,点击Create New Test。如果已经创建,直接点击跳转就可以了。
    SpringBoot实战:整合jUnit测试框架_第2张图片

  3. 填写测试类信息,这里简单说明一下

  • Testing libray: 选择测试依赖包。这里我们选择jUnit的版本。
  • Class name: 测试类名,测试类类名规则一般为:业务类类名+Test。
  • Superclass:继承的父类。
  • Destination package:类的包路径,这个包在test目录下,包路径一般与业务类目录结构相似(接口类无需,因为接口无需测试)
  • Generate:添加@Before和@After方法。
  • Member:勾选需要测试的方法。
    SpringBoot实战:整合jUnit测试框架_第3张图片
    4.确认后,业务类的测试类就创建好了。需要在类名上添加两行注解。并在需要测试的方法中添加@Test注解。
/**
 * SpringJUnit4ClassRunner.class:让 junit 与 spring 环境进行整合
 * 
 * SpringBootTest(classes={App.class}) 的作用
 * 1,当前类为 springBoot 的测试类
 * 2,加载 SpringBoot 启动类。
 */
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = {App.class})
public class UpmsUserServiceTest {
	
	//spring注入需要测试的类,无需我们自己创建
	@Autowired
    public UpmsUserService upmsUserService;
	
	@Test
	public String getName() {
		String name = upmsUserService.getName(1L);
		Assert.assertEquals("abc", name);
	}

	@Test
    public int count() {
        int resule = upmsUserService.count();
        Assert.assertEquals(1, resule);
    }
}

五、运行测试类

1.单个方法或类的测试

单个测试只需光标选中需要运行的方法,单击右键“Run xxxMember()”即可,运行测试类也是类似的方法。
SpringBoot实战:整合jUnit测试框架_第4张图片
SpringBoot实战:整合jUnit测试框架_第5张图片
当然,IDEA做的更只能话,在测试类或方法的前面添加了一个运行图标,这个运行起来就更加方便了。
SpringBoot实战:整合jUnit测试框架_第6张图片

2.运行整个项目的测试方法

如果项目上线了,需要对真个项目运行一下所有的单元测试,那该怎么处理呢。这个提供两种方式。

2.1.使用IDEA运行整个项目的测试类

选择左边整个项目的根目录,单击右键运行“Run All Test”
SpringBoot实战:整合jUnit测试框架_第7张图片
运行结果如下:
SpringBoot实战:整合jUnit测试框架_第8张图片

2.2.使用maven命令运行整个项目的测试类

也可以直接使用maven命令来运行整个项目(前提是你已经安装了maven),其实IDEA的本质也是如此,开发cmd窗口,调整到项目根目录下,执行如下指令:

mvn test

通过运行后,我们可以看到maven会提供一份测试报告。包含总测试方法数,失败总数,错误总数和跳过总数。
SpringBoot实战:整合jUnit测试框架_第9张图片
以上两种方法都很实用,IDEA更方便、更快捷,适用于开发阶段,Maven可以在不同平台运行,适用于测试阶段和项目预演阶段。

六、注意事项与规范

SpringBoot中整合jUnit还是非常容易的,这里简单说一下测试时遇到的一些问题。

  1. 测试类和测试方法的访问权限必须是public。不然运行时会报错。
  2. 测试类类名命名规范:测试类类名=被测试类类名+“Test”
  3. 测试方法名命名规范:测试方法名=被测试方法名测试方法名=被测试方法名+ “Test”
  4. 测试方法中不建议用人肉测试方法,即打印日志的方式来人眼观察是否结果正确,正确方式应该使用Assert等测试类专用方法。
  5. 测试案例不是一成不变的,会随着项目的进行不断更新。

好了,以上是个人的一些小小的经验总结,如果你觉的对你有帮助的话,可以关注我查看更多SpringBoot相关文章!

你可能感兴趣的:(SpringBoot)