Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 在编写单元测试之前编写集成测试是常见的吗?_Unit Testing_Language Agnostic_Automated Tests_Integration Testing - Fatal编程技术网

Unit testing 在编写单元测试之前编写集成测试是常见的吗?

Unit testing 在编写单元测试之前编写集成测试是常见的吗?,unit-testing,language-agnostic,automated-tests,integration-testing,Unit Testing,Language Agnostic,Automated Tests,Integration Testing,在编写单元测试之前编写集成测试是常见的吗?这是传统的、好主意还是最佳实践 在我看来,这似乎是一件合乎逻辑的事情,尤其是在第一次使用第三方API时:您需要知道如何使用第三方软件,然后才能测试自己的代码,以便与第三方软件进行正确的交互,即。,在通过模仿第三方API的单元测试测试代码的正确使用之前,您必须测试您对如何通过集成测试与第三方API交互的理解,对吗 我走对了吗 编辑 谢谢大家的回答。我刚刚发布了一个。当我负责针对第三方API进行开发时,我要做的第一件事就是编写一个原型集成测试代码,如果您愿意

在编写单元测试之前编写集成测试是常见的吗?这是传统的、好主意还是最佳实践

在我看来,这似乎是一件合乎逻辑的事情,尤其是在第一次使用第三方API时:您需要知道如何使用第三方软件,然后才能测试自己的代码,以便与第三方软件进行正确的交互,即。,在通过模仿第三方API的单元测试测试代码的正确使用之前,您必须测试您对如何通过集成测试与第三方API交互的理解,对吗

我走对了吗

编辑


谢谢大家的回答。我刚刚发布了一个。

当我负责针对第三方API进行开发时,我要做的第一件事就是编写一个原型集成测试代码,如果您愿意的话,以获得预期/期望的结果。然后,我创建了一些单元测试来实现这一期望,并将原型重构为我将继续使用的实际代码


是的,在我看来,这很典型。从最纯粹的意义上讲,它可能不是TDD,但我可以接受。

当我负责针对第三方API进行开发时,我要做的第一件事就是编写一个原型集成测试代码,如果您愿意的话,以获得预期/期望的结果。然后,我创建了一些单元测试来实现这一期望,并将原型重构为我将继续使用的实际代码


是的,在我看来,这很典型。从最纯粹的意义上讲,这可能不是TDD,但我同意。

嗯,是的,我经常这样做,但这实际上取决于你所从事的工作以及你对它的信任程度

例如,对于使用数据库的东西,集成测试通常比单元测试可靠得多,因为,例如,NHibernate可以并且将为某些条件生成不正确的查询


另一方面,如果您的算法很复杂,很难从第一次尝试复杂的正则表达式/解析(例如)或复杂的业务规则正确编写,那么单元测试可能更有意义,因为您不想等待通常较慢的集成测试。

嗯,是的,我也经常这样做,但这真的取决于你在做什么,以及你有多相信它

例如,对于使用数据库的东西,集成测试通常比单元测试可靠得多,因为,例如,NHibernate可以并且将为某些条件生成不正确的查询

另一方面,如果您的算法很复杂,在第一次尝试复杂正则表达式/解析(例如)或复杂业务规则时很难正确编写,那么单元测试可能更有意义,因为您不想等待通常较慢的集成测试

我走对了吗

您是否使用测试来推动开发?i、 例如,TDD

如果是这样的话,你就走在正确的道路上了

集成测试和单元测试是模糊的定义。学者们在试图找出区分它们的方法时,可能会有分歧

不要把时间浪费在剪头发上

首先编写测试

我走对了吗

您是否使用测试来推动开发?i、 例如,TDD

如果是这样的话,你就走在正确的道路上了

集成测试和单元测试是模糊的定义。学者们在试图找出区分它们的方法时,可能会有分歧

不要把时间浪费在剪头发上


首先编写测试。

我不确定它有多普遍,但我肯定看到,作为第一步,应该提倡更高级别的测试。例如,在本文中,作者推荐的第一件事是创建一个功能/验收测试支架,然后通过编写高水平的验收测试来开始开发,验收测试处于测试三角形的顶端,在中间进行集成测试,在底部进行单元测试,所以这是同样的原理,真的。 它的结局是:

为写入失败的功能测试 特征X 写入失败的单元测试 使单元测试通过 功能测试通过了吗?如果没有,请再写一封 未能通过单元测试并实现 下一个街区。
我不确定它有多普遍,但我确实看到了更高级别的测试作为第一步被提倡。例如,在本文中,作者推荐的第一件事是创建一个功能/验收测试支架,然后通过编写高水平的验收测试来开始开发,验收测试处于测试三角形的顶端,在中间进行集成测试,在底部进行单元测试,所以这是同样的原理,真的。 它的结局是:

为写入失败的功能测试 特征X 写入失败的单元测试 使单元测试通过 功能测试通过了吗?如果没有,请再写一封 未能通过单元测试并实现 下一个街区。
我认为这取决于:

您正在使用的第三方

我认为测试INSERT查询是否正确地在SQL中插入行是没有意义的 但您可以测试一些不流行的web服务是否在测试中收到预期结果

设置外部依赖的难度和成本

我无法想象集成测试使用支付处理器测试金额超过1000美元的交易是否成功:


我认为这取决于:

您正在使用的第三方

我认为测试INSERT查询是否正确地在SQLServer中插入行是没有意义的,但您可以测试一些不流行的web服务是否在测试中收到预期的结果

设置外部依赖的难度和成本

我无法想象集成测试使用支付处理器测试金额超过1000美元的交易是否成功:


它是否普遍真的重要吗?除了在如此众多的人中受欢迎之外,你应该能够基于其他属性来评价你的想法的优点。@Esteban-我同意。我害怕纳粹分子的主观性,我认为平凡比善良更具主观性,所以我相应地提出了这个问题。传统智慧是发现好想法的好方法。它是否普遍真的重要吗?除了在如此众多的人中受欢迎之外,你应该能够基于其他属性来评价你的想法的优点。@Esteban-我同意。我害怕纳粹分子的主观性,我认为平凡比善良更具主观性,所以我相应地提出了这个问题。传统智慧是找到好点子的好方法。虽然我觉得ITs和UTs之间的界线没有太大的争议,但我真的同意,如果你在做TDD,你真正感兴趣的是获得你的代码工作的信心,即使你改变它,你仍然会有信心。ITs和UTs在这方面都很有用,所以只要你总体上遵循良好的测试实践,你就不会出问题。虽然我觉得ITs和UTs之间的界限没有太大的争议,但我真的同意如果你在做TDD,您真正感兴趣的是获得自信,您的代码可以工作,并且即使您更改了它,您仍然会有这种自信。ITs和UTs在这方面都很有用,所以只要您总体上遵循良好的测试实践,就不会出问题。