gpt4 book ai didi

java - 在实例化嵌入式数据库的同一单元测试中加载 UDF 和自定义模块

转载 作者:行者123 更新时间:2023-11-30 06:48:34 26 4
gpt4 key购买 nike

我有两个不同的测试类,一个测试我编写的模块,另一个测试我开发的用户定义函数。这两个测试以不同的方式实例化 Neo4j 以进行测试。模块测试是这样的:

class ModuleTest
{
GraphDatabaseService database;

@Before
public void setUp()
{
String confFile = this.getClass().getClassLoader().getResource("neo4j-module.conf").getPath();
database = new TestGraphDatabaseFactory()
.newImpermanentDatabaseBuilder()
.loadPropertiesFromFile(confFile)
.newGraphDatabase();
}
}

虽然 UDF 测试类以这种方式实例化其嵌入式数据库:

public class UdfTest
{
@Rule
public Neo4jRule neo4j = new Neo4jRule()
.withFunction(Udf.class);

@Test
public void someTest() throws Throwable
{
try (Driver driver = GraphDatabase.driver(neo4j.boltURI() , Config.build().withEncryptionLevel(Config.EncryptionLevel.NONE).toConfig())) {
Session session = driver.session();
//...
}
}
}

这里的问题是,在第一种形式中,UDF 未注册,而在第二种形式中,UDF 未注册。我的问题是;如何启动嵌入式 Neo4j 数据库进行测试并在其中加载我的模块和 UDF?

最佳答案

看看 APOC 过程如何在其测试类中加载过程和函数。他们在 setUp() 期间调用实用方法:

public static void registerProcedure(GraphDatabaseService db, Class<?>...procedures) throws KernelException {
Procedures proceduresService = ((GraphDatabaseAPI) db).getDependencyResolver().resolveDependency(Procedures.class);
for (Class<?> procedure : procedures) {
proceduresService.registerProcedure(procedure);
proceduresService.registerFunction(procedure);
}
}

只需传递 GraphDatabaseService 和带有要注册的过程/函数的类,这应该为您的测试类设置所有内容。

关于java - 在实例化嵌入式数据库的同一单元测试中加载 UDF 和自定义模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43260588/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com