2 个微服务的集成测试与单元测试
Integration tests vs units test on 2 microservices
我们的团队在 2 个不同的 GitHub 存储库中设计了 2 个微服务。
- 第一个负责将文件输入转换为插入 (graph/neo4j) 数据库中的数据。
- 第二个是 REST API 负责对该数据库进行只读查询,返回 JSON。
因为这些是非常紧密耦合的服务(如果 populate/update 数据库中数据的算法是错误的,数据将被破坏),我的方法是使用精选的 input/expected 输出在两个回购协议上创建单元测试
即为预期节点准备输入文件,然后为预期 JSONs
准备输入节点
这种方法有意义吗?我怀疑在此处的定义中重叠的 集成测试 怎么样?他们需要吗?在这种情况下,单元测试不会涵盖哪些内容?
我不会说它们是紧密耦合的。它们都耦合到数据库,但提供了一个相互分离的层。无论如何,任何跨越组件的东西都是一种集成测试。
在 API 的情况下,“真正的”单元测试方法是模拟数据库调用,因此它不是这种情况的一部分。有多直接/重新启动取决于它的参与程度。如果那不切实际,请在您恢复之前将测试数据库恢复到已知状态。
在文件加载的情况下,同样的基本思想适用,尽管对数据加载过程的模拟数据库调用可能很脆弱。如果您使用真实的数据库,则需要从已知状态启动它,然后再验证它的状态。
问问自己:真的是一个操作,还是“解析文件”和“写入内容到db”两个单元?
我们的团队在 2 个不同的 GitHub 存储库中设计了 2 个微服务。
- 第一个负责将文件输入转换为插入 (graph/neo4j) 数据库中的数据。
- 第二个是 REST API 负责对该数据库进行只读查询,返回 JSON。
因为这些是非常紧密耦合的服务(如果 populate/update 数据库中数据的算法是错误的,数据将被破坏),我的方法是使用精选的 input/expected 输出在两个回购协议上创建单元测试 即为预期节点准备输入文件,然后为预期 JSONs
准备输入节点这种方法有意义吗?我怀疑在此处的定义中重叠的 集成测试 怎么样?他们需要吗?在这种情况下,单元测试不会涵盖哪些内容?
我不会说它们是紧密耦合的。它们都耦合到数据库,但提供了一个相互分离的层。无论如何,任何跨越组件的东西都是一种集成测试。
在 API 的情况下,“真正的”单元测试方法是模拟数据库调用,因此它不是这种情况的一部分。有多直接/重新启动取决于它的参与程度。如果那不切实际,请在您恢复之前将测试数据库恢复到已知状态。
在文件加载的情况下,同样的基本思想适用,尽管对数据加载过程的模拟数据库调用可能很脆弱。如果您使用真实的数据库,则需要从已知状态启动它,然后再验证它的状态。 问问自己:真的是一个操作,还是“解析文件”和“写入内容到db”两个单元?