3

我已经设置了多个层:

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

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

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

所以我的问题是,被测对象是否应该始终使用来自下层的存根对象以便被隔离,并且它们通常有自己的数据集吗?或者我的被测 Web 方法可以调用应用层中的轻量级对象,该对象使用存根数据调用持久层?

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

4

3 回答 3

6

理想情况下,在单元测试中,每个被测对象都与其依赖项隔离。您不想认为您的测试对象已损坏,因为它的依赖项之一损坏并导致测试对象失败。如果您像这样进行测试,您可能会花费大量时间在错误的地方追踪错误。

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

于 2010-02-05T01:16:39.640 回答
1

或者我的被测 Web 方法可以调用应用层中的轻量级对象,该对象使用存根数据调用持久层?

如果您这样做,我将不再将测试称为孤立的单元测试 - 如果测试失败,错误在哪里?- 但是一个集成测试。不要误解我,集成测试也很好,它只是有另一个目的。但是,如果您的目标是单独对网站层进行单元测试,则应该模拟/存根直接依赖项。

于 2010-02-05T01:17:09.683 回答
0

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

于 2010-11-23T02:58:52.287 回答