- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们最近在我们的 .NET 项目中开始使用 TDD 方法,到目前为止我们已经完成了很好的单元测试,但我们仍然受困于集成和端到端测试的问题。假设我有三个对象,其构造函数如下
constructor(kafka, sql, filesystem); // MOQ all the three
constructor(mongo, webservice, kafka); // MOQ all the three
constructor(googlemaps, sql); // MOQ all the two
这里我们有 6 个外部组件要集成到我们的应用程序中。我们可以通过在构造函数注入(inject)中模拟它们的所有依赖关系来对这三个对象进行单元测试,我们还可以通过对所有 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 组件作为真实设置并将所有其他对象作为模拟来编写测试。如果我们这样做,我们最终会得到类似于单元测试的重复代码,但我们通常会得到真实的环境设置而不是模拟对象,但测试用例仍然相同,对吗?
我们可以只进行单元测试和端到端测试吗?因为端到端测试会同时对所有对象进行集成测试。如果端到端测试对所有实时对象进行测试,那么我们为什么还要进行集成测试?进行集成测试的一些最佳实践是什么。我们什么时候应该进行集成测试。非常感谢任何帮助。
最佳答案
如果您想编写此测试,您至少需要了解编写它们的原因。他们要为你解决什么问题。每种测试的缺点是什么。
首先,有人称之为End To End集成测试,什么Martin Fowler in a recent blog调用广泛的集成测试。这种测试或多或少类似于黑盒测试,对某些用户验收场景有用,不易维护,并且很难从失败的测试中得出错误的结论。根据我的经验,很少有用,更多的是痛苦(Mike Cohn 测试金字塔在这里可能是有用的概念)。
另一方面,有集成测试验证与一个外部服务的集成是否正常工作,他称之为窄集成测试。
关于c# - 如何进行集成测试和端到端测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48308908/
我是一名优秀的程序员,十分优秀!