多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 1.3 Spring Boot项目测试 ## 1.3.1 添加Maven依赖 ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> ``` ## 1.3.2 测试业务类 接口定义如下 ```java public interface HelloWorldService { void sayHello(String name); } ``` 实现类如下 ```java @Service public class HelloWorldServiceImpl implements HelloWorldService { private static Logger logger = LoggerFactory.getLogger(HelloWorldServiceImpl.class); @Override public void sayHello(String name) { logger.info("Hello {}", name); } } ``` ## 1.3.3 创建测试类 ```java @RunWith(SpringRunner.class) @SpringBootTest public class HelloWorldServiceImplTest { @Autowired private HelloWorldService helloWorldService; @Test public void sayHello() throws Exception { this.helloWorldService.sayHello("Jaune"); } } ``` 测试类只需要在类上加上注解`@RunWith(SpringRunner.class)`和`@SpringBootTest`就可以直接使用Spring的注入注解注入业务类,进行测试了。 运行测试用例后,控制台输出 ``` 2016-12-27 21:38:19.508 INFO 9240 --- [ main] c.c.s.a.s.impl.HelloWorldServiceImpl : Hello Jaune ``` ## 1.3.4 简化测试 如果使用上面的方法进行测试,则每个测试类都行需要加注解,如果要添加测试相关配置就会非常麻烦。所以我们一般在项目中创建一个测试父类,将测试的注解和相关配置写在父类中,然后单元测试的测试用例来继承这个类,以便简化测试。代码如下 ```java /** * 单元测试基类 * @author Jaune */ @RunWith(SpringRunner.class) @SpringBootTest public class BaseSpringTestCase { } ``` 这时我们的测试用例就改为了 ```java public class HelloWorldServiceImplTest extends BaseSpringTestCase { @Autowired private HelloWorldService helloWorldService; @Test public void sayHello() throws Exception { this.helloWorldService.sayHello("Jaune"); } } ``` 关于数据的测试会在后面的章节中介绍。和Spring Context中的数据库测试是一样的,使用的是`@Transactional`和`@Rollback`标签。