集成和单元测试有什么区别?

集成和单元测试有什么区别?

我知道所谓的单元测试和集成测试的教科书定义。我很好奇的是,什么时候编写单元测试...我会编写它们以涵盖尽可能多的类。

例如,如果我有一个Word类,我会为Word该类编写一些单元测试。然后,我开始写我的Sentence班,当它需要与互动Word类,我会经常写我的单元测试,从而测试它们都SentenceWord......至少在他们互动的地方。

这些测试本质上是否已成为集成测试,因为它们现在测试这两个类的集成,还是只是跨越2个类的单元测试?

一般来说,由于这种不确定的界限,我很少会真正编写集成测试...或者是我使用成品来查看所有部分是否正常工作实际的集成测试,即使它们是手动的,很少重复超出范围每个功能?

我是否误解了集成测试,或者集成和单元测试之间是否真的差别很小?


慕田峪7331174
浏览 690回答 3
3回答

慕容森

当我编写单元测试时,我通过模拟依赖项将正在测试的代码的范围限制为我当前正在编写的类。如果我正在写一个Sentence类,而Sentence依赖于Word,我将使用一个模拟Word。通过模拟Word我可以只关注它的界面并测试我的Sentence类的各种行为,因为它与Word的界面交互。这样我只测试Sentence的行为和实现,而不是同时测试Word的实现。一旦我编写单元测试以确保Sentence在基于Word的界面与Word交互时表现正确,那么我编写集成测试以确保我对交互的假设是正确的。为此,我提供了实际的对象并编写了一个测试,该测试演练了一个最终同时使用Sentence和Word的功能。

料青山看我应如是

我的10位:D我总是被告知单元测试是对单个组件的测试- 应该充分发挥其作用。现在,这往往有很多层次,因为大多数组件都是由较小的部件组成。对我来说,一个单元是系统的功能部分。所以它必须提供一些有价值的东西(即不是字符串解析的方法,但也许是HtmlSanitizer)。集成测试是下一步,它采用一个或多个组件,并确保它们应该按照它们的方式协同工作。然后,您就会担心组件如何单独工作,但是当您在HtmlEditControl中输入html时,它不知何故神奇地知道它的有效与否。虽然它是一条真正可移动的线路。我宁愿更专注于让该死的代码完全停止^ _ ^
打开App,查看更多内容
随时随地看视频慕课网APP