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