如何在 Java 中为 gremlin 查询编写单元测试?

How to write unit tests for gremlin queries in Java?

例如连接到客户端:

val client = Cluster.open(MapConfiguration(config)).connect()

并执行查询

client.submitAsync(PreparedStatement.addUser, map).await().all().join()

PreparedStatement.addUser - gremlin 字符串

问题是:如何在 Java 中对客户端查询进行单元测试。我想用 inMemoryDB 对我们的查询进行单元测试。我们可以 运行 inMemoryDB 作为客户端,因为默认情况下 return traversal() 如果连接到内存数据库?或者我们可以在 traversal?

上执行 gremlin 查询字符串

如果您将 Gremlin 字符串发送到 Gremlin 服务器,您可以将您的测试视为集成测试,并实际启动一个可能配置了 的 Gremlin 服务器实例。在某些情况下,根据您需要测试的内容,TinkerGraph 可能就足够了。

如果你想要更纯粹的单元测试,你将不得不做一些模拟,但这会很复杂,因为涉及到一些 non-public classes 并且 class 依赖项是non-trivial。我认为第一个问题是 Client 需要的 ResultSetResultQueue classes。我创建了这个问题 TINKERPOP-2428

我认为基于字节码的请求比脚本更具挑战性,因为您可以模拟 RemoteConnection 到 return 您自己的 Traversal 实例。甚至还有一个 EmbeddedRemoteConnection 可以让你定义一个本地 GraphTraversalSource 来测试(如果这种情况适合你)。