Junit这种老技术,现在又拿出来说,不为别的,某种程度上来说,更是为了要说明它在项目中的重要性。
那么先简单说一下为什么要写测试用例
1. 可以避免测试点的遗漏,为了更好的进行测试,可以提高测试效率
2. 可以自动测试,可以在项目打包前进行测试校验
3. 可以及时发现因为修改代码导致新的问题的出现,并及时解决
那么本文从以下几点来说明怎么使用Junit,Junit4比3要方便很多,细节大家可以自己了解下,主要就是版本4中对方法命名格式不再有要求,不再需要继承TestCase,一切都基于注解实现。
那么Spring Boot如何使用Junit呢?
1). 加入Maven的依赖;
2). 编写测试service;
3). 编写测试类;
引入maven依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency>
编写测试代码,详细代码如下:
package com.example.SpringBootJdbcTest; import java.util.List; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.SpringApplicationConfiguration; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import com.example.Application; import com.example.domain.User; import com.example.repositories.UserRepository; @RunWith(SpringJUnit4ClassRunner.class) @SpringBootTest(classes=Application.class)// 指定spring-boot的启动类 //@SpringApplicationConfiguration(classes = Application.class)// 1.4.0 前版本 public class SpringBootJdbcTest { @Autowired private UserRepository userRepository; @Test public void findAllUsers() { List<User> users = userRepository.findAll(); System.out.println(users); } @Test public void findUserById() { User user = userRepository.findUserById(1); } @Test public void updateById() { User newUser = new User(3, "JackChen", "JackChen@qq.com"); userRepository.update(newUser); User newUser2 = userRepository.findUserById(newUser.getId()); } @Test public void createUser() { User user = new User(0, "tom", "tom@gmail.com"); User savedUser = userRepository.create(user); } }
编写要测试的类
UserRepository.java
package com.kfit.service; import org.springframework.stereotype.Service; @Service publicclass UserRepository { public void findAllUsers()(){ System.out.ptintln("0000"); } } //............其它方法已省略
这时候就可以进行测试了,右键—Run As – Junit Test。
Junit基本注解介绍
//在所有测试方法前执行一次,一般在其中写上整体初始化的代码
@BeforeClass
//在所有测试方法后执行一次,一般在其中写上销毁和释放资源的代码
@AfterClass
//在每个测试方法前执行,一般用来初始化方法(比如我们在测试别的方法时,类中与其他测试方法共享的值已经被改变,为了保证测试结果的有效性,我们会在@Before注解的方法中重置数据)
@Before
//在每个测试方法后执行,在方法执行完成后要做的事情
@After
// 测试方法执行超过1000毫秒后算超时,测试将失败
@Test(timeout = 1000)
// 测试方法期望得到的异常类,如果方法执行没有抛出指定的异常,则测试失败
@Test(expected = Exception.class)
// 执行测试时将忽略掉此方法,如果用于修饰类,则忽略整个类
@Ignore(“not ready yet”)
@Test
@RunWith
在JUnit中有很多个Runner,他们负责调用你的测试代码,每一个Runner都有各自的特殊功能,你要根据需要选择不同的Runner来运行你的测试代码。
如果我们只是简单的做普通Java测试,不涉及Spring Web项目,你可以省略@RunWith注解,这样系统会自动使用默认Runner来运行你的代码。
总结
可以看到,对spring-boot项目进行单元测试是件容易的事儿,需要添加spring-boot-starter-test依赖,然后
使用@RunWith和@SpringBootTest或@SpringApplicationConfiguration(1.4.0过期)注解,然后引入自己要测试的bean,调用指定方法进行测试即可。
感觉本站内容不错,读后有收获?小额赞助,鼓励网站分享出更好的教程