开发者社区> 华章计算机> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

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

相关文章
软件测试|AppCrawler 自动遍历测试实践
软件测试|AppCrawler 自动遍历测试实践
0 0
Git:Python代码开发到服务器上测试实践
Git:Python代码开发到服务器上测试实践
0 0
测试团队技术转型实践方法
测试团队技术转型实践方法
0 0
Git:Python代码开发到服务器上测试实践
Git:Python代码开发到服务器上测试实践
0 0
测试右移-后台服务监控告警实践
作为项目的测试人员,除了要完成项目测试的基本工作,还应当能够及时跟进问题反馈、了解问题背后的真实原因、参与讨论解决方案,驱动问题解决,从而“变被动为主动”。
0 0
【图像分类】Vision Transformer理论解读+实践测试
Vision Transformer是2021年谷歌在ICLR上提出的算法,算法原理并不复杂,但是其价值是开创性的。它首次将NLP领域火热的Transformer模型架构移植到了CV领域,打破了这两个领域壁垒,并取得不错的成效。论文名称: An Image Is Worth 16x16 Words: Transformers For Image Recognition At Scale。
0 0
干货 | 精准化测试原理简介与实践探索
干货 | 精准化测试原理简介与实践探索
0 0
持续测试是一种测试实践
持续测试是一种测试实践
0 0
【精准测试】iOS 代码覆盖率数据采集自动化实践
《简单两步实现 Jacoco+Android 代码覆盖率的接入!(最新最全版)》介绍了如何实现Android端的代码覆盖率接入,基于同样的背景我们也需要实现iOS端的代码覆盖率数据采集。
0 0
利器 | AppCrawler 自动遍历测试实践(三):动手实操与常见问题汇总
利器 | AppCrawler 自动遍历测试实践(三):动手实操与常见问题汇总
0 0
文章
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
ICA安全标准组测试认证分享
立即下载
MaxCompute基于BigBench标准的最新测试进展
立即下载
用AI高效测试移动应用
立即下载