【发布时间】:2016-04-28 11:34:05
【问题描述】:
我不确定真正的单元测试是否应该与数据库等外部系统严格交互,但我的确实如此——我的设置代码的想法是确保数据库处于某种状态,然后我的单元测试期望来自方法的某些结果被调用;我需要检查 DB-access 代码是否正确。
我想在多个测试类中使用相同的数据库测试数据,而不是将其复制粘贴到每个类中'[TestInitialize],我想知道如何最好地做到这一点。选项似乎包括:
- 将其全部放入外部 .sql 脚本并运行它
- 某种带有静态方法的辅助类
我希望更新数据库的代码是我的 C# 代码的一部分,但想知道 MSTest 项目是否有更典型的方式来处理这个问题?
【问题讨论】:
-
引用外部系统是个坏主意。我更喜欢在数据访问层和业务层之间创建一个层。例如,有一个带有数据访问方法和属性的接口。这可以测试。
-
我想我一般同意,但这就是设置的方式。如果这能让你更快乐,就称它为不同类型的测试:) 集成?
-
是否需要为每个测试重置 Db 还是将其用作所有测试。
-
你会使用继承。您可以创建一个基础测试类并让其他类继承它(包括
[TestInitialize])。看看这篇文章Structuring Unit Tests -
@Mr.Boy 根据我在之前评论中链接到的文章检查我的答案。
标签: c# unit-testing mstest