开发者社区> 华章计算机> 正文

深入实践Spring Boot2.4.4 Neo4j测试

简介:
+关注继续查看

2.4.4 Neo4j测试

代码清单2-24是Neo4j的数据库配置类,其中@Enable-TransactionManagement启用了事务管理,@EnableNeo4jRe-positories启用了Neo4j资源库并指定了我们定义的资源库接口的位置,在重载的SessionFactory函数中设定了定义实体的位置,这将促使定义的实体被作为域对象导入,RemoteServer设定连接Neo4j服务器的URL、用户名和密码,这些参数要依据安装Neo4j服务器的情况来设置。如果还没有安装Neo4j服务器,可参考附录A的方法进行安装,安装完成后启动服务器以备使用。

代码清单2-25 Neo4j配置类

@Configuration

@EnableTransactionManagement

@EnableNeo4jRepositories(basePackages = { "dbdemo.neo4j.repositories" })

public class Neo4jConfig extends Neo4jConfiguration {

    @Override

    public Neo4jServer neo4jServer() {

        return new RemoteServer("http://192.168.1.221:7474","neo4j","12345678");

    }

 

    @Override

    public SessionFactory getSessionFactory() {

        return new SessionFactory("dbdemo.neo4j.domain");

    }

}

现在可以编写一个测试程序来验证和演示上面编写的代码的功能,如代码清

单2-26所示。这个测试程序分别创建了三部电影和三个演员,以及三个演员在三部电影中各自扮演的角色,然后按照电影标题查出一部电影,按照其内在的关系输出这部电影的信息和每个演员扮演的角色。这些数据的内容参照了Neo4j帮助文档中提供的示例数据。

代码清单2-26 使用Neo4j的JUint测试程序

@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration(classes = {Neo4jConfig.class})

public class MovieTest {

    private static Logger logger = LoggerFactory.getLogger(MovieTest.class);

 

    @Autowired

    MovieRepository movieRepository;

 

    @Before

    public void initData(){

        movieRepository.deleteAll();

 

        Movie matrix1 = new Movie();

        matrix1.setTitle("The Matrix");

        matrix1.setYear("1999-03-31");

 

        Movie matrix2 = new Movie();

        matrix2.setTitle("The Matrix Reloaded");

        matrix2.setYear("2003-05-07");

 

        Movie matrix3 = new Movie();

        matrix3.setTitle("The Matrix Revolutions");

        matrix3.setYear("2003-10-27");

 

        Actor keanu = new Actor();

        keanu.setName("Keanu Reeves");

 

        Actor laurence = new Actor();

        laurence.setName("Laurence Fishburne");

 

        Actor carrieanne = new Actor();

        carrieanne.setName("Carrie-Anne Moss");

 

        matrix1.addRole(keanu,  "Neo");

        matrix1.addRole(laurence, "Morpheus");

        matrix1.addRole(carrieanne,  "Trinity");

        movieRepository.save(matrix1);

        Assert.notNull(matrix1.getId());

 

        matrix2.addRole(keanu, "Neo");

        matrix2.addRole(laurence, "Morpheus");

        matrix2.addRole(carrieanne,  "Trinity");

        movieRepository.save(matrix2);

        Assert.notNull(matrix2.getId());

 

        matrix3.addRole(keanu, "Neo");

        matrix3.addRole(laurence, "Morpheus");

        matrix3.addRole(carrieanne, "Trinity");

        movieRepository.save(matrix3);

        Assert.notNull(matrix3.getId());

    }

 

    @Test

    public void get(){

        Movie movie = movieRepository.findByTitle("The Matrix");

        Assert.notNull(movie);

        logger.info("===movie=== movie:{}, {}",movie.getTitle(), movie.getYear());

        for(Role role : movie.getRoles()){

            logger.info("====== actor:{}, role:{}", role.getActor().getName(), role.getRole());

        }

    }

}

在IDEA的Run/Debug Conf?iguration配置中增加一个JUint的配置项目,模块选择neo4j,工作目录选择模块所在的根目录,测试程序选择MovieTest这个类,并将配置保存为neo4jtest。

使用Debug模式运行测试项目neo4jtest,如果测试通过,将在控制台中看到输出查询的这部电影和所有演员及其扮演的角色,如下所示:

=== movie=== movie:The Matrix, 1999-03-31

====== actor:Keanu Reeves, role:Neo

====== actor:Laurence Fishburne, role:Morpheus

====== actor:Carrie-Anne Moss, role:Trinity

这时,在数据库客户端的控制台上,单击左面侧边栏的关系类型ACTS_IN,可以看到一个很酷的图形,图中每部电影和每个演员是一个节点,节点的每条有向边代表了这个演员在那部电影中扮演的角色,如图2-7所示。

 

图2-7 演员和电影的角色关系图

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Spring5学习(三):简单测试Spring的基本功能
今天开始学习Sping5,源码里面有很多值得学习的思想。 从最简单开始,今天先简单测试一下Sping的功能。
21 0
快速搭建activiti spring junit测试,用起来超级方便
快速搭建activiti spring junit测试,用起来超级方便
19 0
【微服务安全】使用 Spring Boot、Kafka、Vault 和 Kubernetes 保护微服务间通信——第 5 部分:部署和测试
使用 Spring Boot、Kafka、Vault 和 Kubernetes 保护微服务间通信——第 5 部分:部署和测试
40 0
具备spring环境的测试头注解;xml 规则;JavaScript:改变 HTML 内容案例
具备spring环境的测试头注解 具备spring环境的测试头注解 test
42 0
声明式事务测试 :Spring注解笔记系列(一)
事务拦截器:先获取事务相关的一些属性,再来获取PlateformTransactionManager,如果事先没有添加任何指定TransactionManager,最终会从容器中按照类型获取一个PlateformTransactionManager
58 0
【Spring】作业记录:spring项目从创建、配置到功能实现、测试
【Spring】作业记录:spring项目从创建、配置到功能实现、测试
46 0
Spring Data Solr的api demo测试操作
Spring Data Solr的api demo测试操作
67 0
spring学习31-使用junit4测试
spring学习31-使用junit4测试
56 0
文章
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
电商网站需求分析和架构设计Spring Boot2.6入门
立即下载
云上Docker的Spring Cloud微服务应用实践分享
立即下载
Spring Boot 2.6.0电商网站开发实战
立即下载