作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个不同的测试类,一个测试我编写的模块,另一个测试我开发的用户定义函数。这两个测试以不同的方式实例化 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/
我是一名优秀的程序员,十分优秀!