SDN 4.1 - 用于并行执行测试用例的多线程 Neo4j TestServer
SDN 4.1 - Multithreading Neo4j TestServer for parallel execution of test cases
我正在使用 org.neo4j.ogm.testutil.TestServer 和 http 驱动程序而不是嵌入式驱动程序进行集成测试,因为我喜欢 TestServer 提供基于浏览器的界面来查看每个测试发生了什么的方式。
但是 - 我的测试需要很长时间!在一台相当快的机器上构建最多需要 30 分钟左右。
我想做的是使用 maven surefire 插件并行执行我的测试用例。
为此,我想我需要能够启动多个 neo4j TestServer 实例,每个实例都在不同的端口上。
使用 neo4j 4.1 执行此操作的最佳位置在哪里?我假设我的测试用例的@Before 和@After(用于关闭)方法? (可能提取成超class?)
此外,如何将当前测试上下文的当前端口获取到每个单元测试中?
任何有关如何解决此问题的建议将不胜感激:)
查看 org.neo4j.ogm.testutil.MultiDriverTestClass
使用 TestServer 设置驱动程序。
无论如何,TestServer 应该选择一个可用端口,这应该可以解决您并行设置这些端口的问题。事实上,您可以让您的测试 class 扩展 org.neo4j.ogm.testutil.MultiDriverTestClass
(org.neo4j.ogm.persistence.examples 中的大多数测试都这样做)并提供一个 ogm.properties
文件来指定驱动程序要使用的是 HTTP 驱动程序
driver=org.neo4j.ogm.drivers.http.driver.HttpDriver
我正在使用 org.neo4j.ogm.testutil.TestServer 和 http 驱动程序而不是嵌入式驱动程序进行集成测试,因为我喜欢 TestServer 提供基于浏览器的界面来查看每个测试发生了什么的方式。
但是 - 我的测试需要很长时间!在一台相当快的机器上构建最多需要 30 分钟左右。
我想做的是使用 maven surefire 插件并行执行我的测试用例。
为此,我想我需要能够启动多个 neo4j TestServer 实例,每个实例都在不同的端口上。
使用 neo4j 4.1 执行此操作的最佳位置在哪里?我假设我的测试用例的@Before 和@After(用于关闭)方法? (可能提取成超class?)
此外,如何将当前测试上下文的当前端口获取到每个单元测试中?
任何有关如何解决此问题的建议将不胜感激:)
查看 org.neo4j.ogm.testutil.MultiDriverTestClass
使用 TestServer 设置驱动程序。
无论如何,TestServer 应该选择一个可用端口,这应该可以解决您并行设置这些端口的问题。事实上,您可以让您的测试 class 扩展 org.neo4j.ogm.testutil.MultiDriverTestClass
(org.neo4j.ogm.persistence.examples 中的大多数测试都这样做)并提供一个 ogm.properties
文件来指定驱动程序要使用的是 HTTP 驱动程序
driver=org.neo4j.ogm.drivers.http.driver.HttpDriver