我一直在阅读很多有利于单元测试的意见,这是我迄今为止没有遵循的程序,并且有一些问题。
据我了解,单元测试的基础是在代码中运行一些过程,并将返回值与预期值进行比较,看看它是否匹配以确定测试是否已通过。
在我看过的简单示例中,它非常简单,因为它们只是测试整数或十进制输出值,测试确实非常简单,因为所有内容都或多或少地在内存中发生。
现在,让我们假设我有一个写入文件的过程,或者在SQL Server数据库中插入记录...每当我运行我的测试时,我会在我的文件或服务器中发生这些写入如果我多次运行测试,我可能遇到问题......如果已经在先前的测试中插入了记录,则会发生主键违规。
我知道测试应该在测试服务器上完成,但即使这样,很多测试似乎也会导致不实际的维护,例如每次想要运行测试时恢复数据库都会令人沮丧和耗时。从长远来看。
简而言之,我很想知道常规单元测试开发人员如何以简单,时间,成本效益和直接的方式管理这种测试,修改环境状态?
感谢。
我主要使用C#进行编码并使用VS 2008,但我想这是一个相当普遍的问题
答案 0 :(得分:4)
您需要调查Mocking frameworks。
这些允许您设置测试,就像您正在写入数据库,但实际上您根本没有进行任何更改。您正在测试您的代码而不是数据库连接,只要模拟对象返回值就好像它是真正的代码您的测试是有效的。
您可以设置模拟对象来测试有效和无效的情况,甚至可以模拟丢失数据库连接(例如)。
答案 1 :(得分:3)
单元测试是指单独测试代码,您所指的测试是集成测试或构建验证测试。
在为使用数据库或流的代码片段编写单元测试时,通常使用模拟框架(moq是我总是建议的)或者是专注于单独测试代码的各种技术。