【发布时间】:2014-01-05 02:13:14
【问题描述】:
如何对一个相当简单的应用程序进行单元测试?
通过“相当简单的应用程序”理解:
通过 ORM 查询数据库(可能很复杂)并显示结果而不进行任何进一步处理的应用程序。也就是说,Linq 查询返回一个简单的
IEnumerable,它将显示在屏幕上。
到目前为止,我正在编写的那种测试往往很慢,而且我越来越延迟它们的执行。如果我保持这个过程,这些测试只会在我提交代码时执行,因此我将失去单元测试的所有好处:在一分钟内突出显示错误或错误。
我试图在内存中创建一个对象图,但是随着应用程序的增长,这个图变得非常复杂,并且需要越来越多的时间来维护。当我插入 ORM 而不是对象图时,我看到了我的单元测试没有预见到的错误......
就我而言,我需要一个通用的解决方案,因为 ORM 应该是实体框架或 nHibernate。
编辑:
我重新表述我的问题,因为它可能有点不清楚:测试这种应用程序意味着测试查询。 测试 Linq 查询的最佳方式是什么?
【问题讨论】:
-
这完全不清楚。你到底想测试什么?做什么的?有样品吗? ...
-
这是非常基于意见的,所以没有答案。但我相信 EF 和 nHibernate 可以工作,不需要进行测试。我做什么:我使用服务实现中的任何 ORM。然后,该服务由进行额外处理/验证的 Facade 类使用。我有一个使用 ORM 的服务版本和一个使用基于内存的数据的服务版本。然后我经常使用基于模型内存的服务来测试 Facade。不太常见的是基于 ORM 的服务。这可以防止基于 DB 的 ORM 导致执行缓慢。
-
这是一个非常广泛的问题。或许你可以在programmers.stackexchange.com上问
-
我编辑我的问题以澄清它。
标签: c# unit-testing