单元测试 - 隔离测试

时间:2010-02-05 01:10:02

标签: unit-testing stub

我的设置有很多层:

  • 网站
  • 申请/服务
  • 域(包含实体)
  • 持久性(包含存储库)

我正在使用从存根对象在内存中创建的数据来隔离测试持久层。

现在,我正在考虑测试我的网站层。我知道我应该单独测试它,我认为这意味着为它使用的Application层对象创建一个存根但是这个存根需要它自己的内存数据集,在持久层中的stub中重复,我不想这样做复制并管理它。

所以我的问题是,测试中的主题是否应该始终与下面的层中的存根对象一起使用以便隔离并且它们通常是否有自己的数据集?或者我的web方法在测试中是否可以在Application Layer中调用轻量级对象,该对象使用存根数据调用持久层?

感谢您的帮助。对我来说这感觉就像是最后一点......

3 个答案:

答案 0 :(得分:5)

理想情况下,在单元测试中,每个受测试的主体都与其依赖关系隔离。您不希望认为您所测试的主题被破坏,因为其中一个依赖项已破坏并导致测试中的主题失败。如果你这样测试,你可能会花很多时间在错误的地方追踪错误。

测试事物如何一起运行是集成测试的领域,而不是单元测试

答案 1 :(得分:1)

  

或者我的测试中的web方法可以调用Application Layer中的轻量级对象,该对象使用存根数据调用持久层吗?

如果你这样做,我不会再将测试称为单元测试 - 如果测试失败,那么bug在哪里? - 但是集成测试。不要误解我,集成测试也没关系,它只是有另一个目的。但是如果您的目标是单独测试网站层,则应该模拟/存根直接依赖。

答案 2 :(得分:0)

设置测试数据可能是一项繁琐的任务。如果您使用DotNet,您可以使用名为NBuilder的库来非常轻松快速地生成测试数据。它支持一个漂亮的流畅界面。您可以阅读更多相关信息here