如何在 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
需要的 ResultSet
和 ResultQueue
classes。我创建了这个问题 TINKERPOP-2428。
我认为基于字节码的请求比脚本更具挑战性,因为您可以模拟 RemoteConnection
到 return 您自己的 Traversal
实例。甚至还有一个 EmbeddedRemoteConnection
可以让你定义一个本地 GraphTraversalSource
来测试(如果这种情况适合你)。
例如连接到客户端:
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 服务器,您可以将您的测试视为集成测试,并实际启动一个可能配置了
如果你想要更纯粹的单元测试,你将不得不做一些模拟,但这会很复杂,因为涉及到一些 non-public classes 并且 class 依赖项是non-trivial。我认为第一个问题是 Client
需要的 ResultSet
和 ResultQueue
classes。我创建了这个问题 TINKERPOP-2428。
我认为基于字节码的请求比脚本更具挑战性,因为您可以模拟 RemoteConnection
到 return 您自己的 Traversal
实例。甚至还有一个 EmbeddedRemoteConnection
可以让你定义一个本地 GraphTraversalSource
来测试(如果这种情况适合你)。