我们最近在我们的中开始了TDD方法。NET项目,到目前为止,我们已经做了很好的单元测试,但我们仍被集成和端到端测试的问题所困扰。假设我有三个对象,其构造函数如下
constructor(kafka, sql, filesystem); // MOQ all the three
constructor(mongo, webservice, kafka); // MOQ all the three
constructor(googlemaps, sql); // MOQ all the two
这里有6个外部组件要集成到我们的应用程序中。我们可以通过在构造函数注入中模拟三个对象的所有依赖项来对它们进行单元测试,也可以通过为所有6个外部组件进行实时设置来进行端到端测试。
我的问题是我们如何处理集成测试?集成测试处理对象测试吗?我相信单元测试处理对象测试,所以集成必须处理外部组件测试。如果我们想编写集成测试,我该怎么做?
// Setup kafka real and other objects must still be mocked
constructor(kafka, sql, filesystem); MOQ sql, filesystem but kafka is real
constructor(mongo, webservice, kafka); MOQ mongo, webservice but kafka is real
constructor(googlemaps, sql); MOQ all the two
通过将kafka组件设置为真实设置,并将所有其他对象设置为模拟来编写测试。如果我们这样做,我们会得到类似于单元测试的重复代码,但不是模拟对象,我们通常会得到真实的环境设置,但测试用例仍然是一样的,对吗?
我们可以只进行单元测试和端到端测试吗?因为端到端测试一次对所有对象进行集成测试。如果端到端测试完成了所有实时对象的测试,那么为什么我们还要进行集成测试呢?进行集成测试的一些最佳实践是什么。我们应该在什么时候进行集成测试。非常感谢您的帮助。