gpt4 book ai didi

c# - 如何进行集成测试和端到端测试?

转载 作者:行者123 更新时间:2023-11-28 21:22:31 26 4
gpt4 key购买 nike

我们最近在我们的 .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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com