1

我准备创建我的第一个单元测试,或者至少这是我怎么想的吧。在阅读本周末的单元测试后,我怀疑我实际上想做集成测试。我有第三方供应商提供的黑盒子组件(例如数字级API),我想创建测试以测试它在我的应用程序中的使用情况。我的目标是确定在集成到我的应用程序中时,该组件的新发布版本是否正常工作。我可以使用单元测试工具进行集成测试吗?

使用该组件在我的应用程序的代码深埋,并利用它的方法将是单元测试很困难没有广泛的重构,我不能在这个时候做。我打算最终。 考虑到这个事实,我正打算编写自定义单元测试(即没有从我的类方法或属性一个派生)把这个第三方组件通过相同的操作,我的应用程序将需要它。我确实怀疑我以这种方式规避了单元测试的重大好处,但正如我之前所说,我现在无法停止并重构我的应用程序的这个特定部分。

我在想,如果我还可以写单元测试(使用Visual Studio)中测试该组件或者是违背最佳做法?从我的阅读中可以看出,Visual Studio中的单元测试工具非常适合这样做 - 单元测试方法和组件的属性。

我兜兜在我的头上,我不能确定我要的是一个单元测试(第三方组件)或集成测试?我喜欢单元测试,因为它是一个托管系统来执行测试,但我不知道它们是否适合我正在尝试做的事情。

+0

你应该看科林Bowern的对谈[建筑更好的集成测试(http://channel9.msdn.com/Events/TechEd/NewZealand/TechEd-New-Zealand-2012/DEV303)[9频道] (http://channel9.msdn.com/)。 – kagundajm

回答

0
  1. 你把测试围绕第三方组件,来证明它做什么,你认为它(你的系统的其余部分需要它做的事)的计划是一个好主意。通过这种方式,当您升级组件时,您可以快速判断其是否已更改,这意味着您的系统将需要更改。这将是该组件与系统其余部分之间的Integration Contract Test

  2. 展望未来,您应该将第三方组件置于系统其他组件所依赖的接口之后。然后那些其他部分可以与第三方组件隔离进行测试。

我指的迈克尔羽毛Working Effectively with Legacy Code对方法去添加单元测试代码没有单元测试以及因素的信息。

0

测试第三方组件,你正在做它的方式肯定是不反对的最佳做法。因为a)第三方组件被测试为一个孤立的(子)系统,并且b)您的测试目标是验证(子系统)测试,因此这样的测试将被分类为(子)系统测试。在API级别上的行为而不是在测试较低级别的实现方面。

该测试肯定不会被归类为集成测试,因为您根本不是将测试组件与代码一起进行测试。也就是说,您将例如不会发现您的组件是否以违反第三方组件的期望的方式使用第三方组件。

这么说,我想强调两点:

  • 事实上,测试是不是一个单元测试并不能使不那么值钱了。我遇到了一些情况,我告诉人们他们的测试不是单元测试,他们对我很生气,因为他们认为我想告诉他们他们的测试没有意义 - 这是一个不幸的误解。
  • 测试所属类别不是由您正在使用哪种测试框架等技术因素定义的。它是由您想要通过测试实现的目标来定义的,例如,您想要查找哪种类型的错误。
相关问题