# 43.3.11 自动配置的JDBC测试

`@JdbcTest`同`@DataJpaTest`相似，不过是给纯JDBC相关的测试用的。默认的，它将会配置一个内存数据库和一个`JdbcTemplate`。常规的`@Component`bean将不会加载进`ApplicationContext`。

JDBC测试类是事务型的，默认在每个测试结束时回滚，具体查看Spring参考文档的[相关章节](https://docs.spring.io/spring/docs/5.0.4.RELEASE/spring-framework-reference/testing.html#testcontext-tx-enabling-transactions)。如果这不是你想要的结果，你可以按如下方式对一个测试或是整个类禁用事务管理：

```java
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.autoconfigure.jdbc.JdbcTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

@RunWith(SpringRunner.class)
@JdbcTest
@Transactional(propagation = Propagation.NOT_SUPPORTED)
public class ExampleNonTransactionalTests {

}
```

如果你更喜欢在非真实的数据库上运行你的测试，你可以和`DataJpaTest`一样，使用`@AutoConfigureTestDatabase`注解。（查看[43.3.10 自动配置的Data JPA测试](https://docs.spring.io/spring-boot/docs/2.0.0.RELEASE/reference/htmlsingle/#boot-features-testing-spring-boot-applications-testing-autoconfigured-jpa-test)）

在[附录](https://docs.spring.io/spring-boot/docs/2.0.0.RELEASE/reference/htmlsingle/#test-auto-configuration)中可以查看`@JdbcTest`开启的自动配置列表。
