# 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`标签。