# 43.3.14 自动配置的Data Neo4j测试

你可以使用`@DataNeo4jTest`测试Neo4j应用。默认的，它将会配置一个内存Neo4j（如果内嵌的驱动可用），扫描`@NodeEntity`类和配置Spring Data Neo4j仓库。常规的`@Component`bean将不会加载进`ApplicationContext`。（在Spring Boot里使用Neo4J的更多信息，请查看[章节 30.3 Neo4j](https://docs.spring.io/spring-boot/docs/2.0.0.RELEASE/reference/htmlsingle/#boot-features-neo4j)。）

下面的例子展示了在Spring Boot里使用Neo4J测试的典型设置：

```java
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.data.neo4j.DataNeo4jTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@DataNeo4jTest
public class ExampleDataNeo4jTests {

    @Autowired
    private YourRepository repository;

    //
}
```

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

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

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

}
```

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