深入实践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 演员和电影的角色关系图

相关文章
|
1天前
|
Web App开发 JSON 前端开发
我理解的测试开发与实践总结——新人篇
本文以作者的视角,讲述了测试与开发、产品之间的关系,如何做好一个测试以及做好一个测试应当具有的素质与技能。
|
2天前
|
敏捷开发 测试技术 持续交付
深入理解自动化测试:框架与实践
【5月更文挑战第5天】 在现代软件开发周期中,自动化测试已成为确保产品质量和加速交付过程的关键环节。本文将深入探讨自动化测试的核心概念、框架选择以及实际实施过程中的最佳实践。通过分析各种自动化测试工具和技术的优缺点,我们旨在为读者提供一种系统化的方法来构建和维护有效的自动化测试环境。
|
7天前
|
机器学习/深度学习 人工智能 算法
深入理解与实践:基于AI的软件测试自动化
【5月更文挑战第1天】随着人工智能的不断发展,其在软件测试中的应用也日益广泛。本文将探讨如何利用AI进行软件测试自动化,包括其理论基础、实现方式以及在实际中的应用。我们将通过实例分析,展示AI在提高软件测试效率和质量方面的巨大潜力。
|
7天前
|
Java 测试技术 Maven
Spring Boot单元测试报错java.lang.IllegalStateException: Could not load TestContextBootstrapper [null]
Spring Boot单元测试报错java.lang.IllegalStateException: Could not load TestContextBootstrapper [null]
|
7天前
|
中间件 测试技术 API
探索自动化测试工具的新边界:Selenium与Appium的集成实践
【4月更文挑战第30天】 随着移动应用和Web应用的不断融合,传统的自动化测试工具需要适应新的测试环境。本文将详细分析Selenium和Appium这两款流行的自动化测试工具的集成实践,探讨如何构建一个能够同时支持Web和移动端应用的自动化测试框架。通过对比两者的技术架构、功能特性以及在实际项目中的集成过程,我们旨在为读者提供一个清晰的指导,帮助他们在复杂的应用环境中实现高效、稳定的自动化测试流程。
|
8天前
|
机器学习/深度学习 人工智能 数据管理
深入探索自动化测试框架的设计与实践
【4月更文挑战第30天】 随着软件行业的快速发展,传统的手动测试方式在效率和可靠性方面逐渐暴露出不足。本文将重点探讨自动化测试框架的设计理念、关键组成部分以及实际应用中的挑战与解决方案。通过对自动化测试框架的深入研究,我们旨在为读者提供构建高效、可靠的自动化测试系统的指导和启示。文章首先分析了自动化测试的重要性,接着详细介绍了几种流行的自动化测试工具,并以此为基础提出了设计框架的核心原则和架构模式。最后,通过案例研究,展示了如何在实际项目中实施自动化测试框架,并讨论了面临的常见问题及解决策略。
|
8天前
|
机器学习/深度学习 人工智能 机器人
深入理解自动化测试:框架、工具与实践
【4月更文挑战第30天】 在现代软件开发周期中,自动化测试已成为确保产品质量和加速市场交付的关键环节。本文将探讨自动化测试的核心框架、常用工具以及实际应用的最佳实践,旨在为软件测试工程师提供深入的理解和有效的策略,以改进其自动化测试流程。我们将分析几种流行的测试自动化框架,包括Selenium、Appium和JUnit,并讨论如何根据项目需求选择适合的工具。此外,文中还将介绍持续集成(CI)环境下的自动化测试策略,以及如何通过测试结果分析和报告来优化测试过程。目标是帮助读者构建更健壮、更高效的自动化测试系统。
|
28天前
|
Java Linux
Springboot 解决linux服务器下获取不到项目Resources下资源
Springboot 解决linux服务器下获取不到项目Resources下资源
|
1月前
|
Java API Spring
SpringBoot项目调用HTTP接口5种方式你了解多少?
SpringBoot项目调用HTTP接口5种方式你了解多少?
91 2
|
1月前
|
前端开发 JavaScript Java
6个SpringBoot 项目拿来就可以学习项目经验接私活
6个SpringBoot 项目拿来就可以学习项目经验接私活
39 0