【发布时间】:2009-04-17 20:59:31
【问题描述】:
我刚刚在我的应用程序中遇到了一个错误,可能已经被一些集成测试捕获了,所以我认为是时候写一些了!
我的问题与这些测试的设置有关,以及您在代码的哪一层运行测试。
设置
考虑到我应该有很多集成测试,我不想为每个测试创建和删除一个测试数据库,这会非常慢(即使它是内存中的 SqlLite)。我的想法是:
- 在我的开发数据库旁边有一个测试数据库
- 在测试之前,运行一些重置脚本,它将正确设置我的架构并插入任何必要的数据(不是特定于测试用例)
- 只需将此测试数据库用作真实数据库即可。
但是,我必须在每个 [Setup] 中运行我的 Fluent NHib 配置似乎非常浪费。这很难吗?我在这里有什么选择?
我的会话当前包装在 UoW 模式中,分别在 begin_request 和 end_request(MVC Web 应用程序)上执行创建和销毁。我应该修改它以更好地配合测试来解决这个问题吗?
测试
真正写一些测试的时候,我应该怎么做?
我应该从最高级别(我的 MVC 控制器操作)还是从最低级别(存储库)进行测试。
如果我测试最低,我将不得不手动对所有数据进行硬编码。这将使我的测试对代码的更改变得脆弱,并且也不能代表运行时代码中实际发生的情况。如果我在最高级别进行测试,我必须运行我所有的 IoCC 设置,以便注入依赖项并让整个事情发挥作用(再次,在每个 [SetUp] 中重复此操作?)
嗯!我迷路了,有人指出我正确的方向!
谢谢
【问题讨论】: