2

我们可以使用 VS2010 对 C# 中的文件 I/O 操作进行单元测试吗?由于单元测试访问数据层效率不高,我们是否需要对操作进行单元测试,或者是否有任何模拟或假操作来这样做

4

3 回答 3

1

当您需要实际访问文件系统或另一个系统时,您在这里谈论的更多是集成测试。

在进行单元测试时,您需要模拟这样的事情,您需要使用依赖注入,例如使用统一和“模拟”文件系统。

以下是寻找模拟文件系统的代码的好地方。

http://systemwrapper.codeplex.com/

http://systemwrapper.codeplex.com/

http://jolt.codeplex.com/

http://www.typemock.com/

关于嘲笑的一般信息......

http://martinfowler.com/articles/mocksArentStubs.html#ClassicalAndMockistTesting

以下链接显示了如何将依赖注入与统一使用...

http://www.codeproject.com/Articles/254091/Implementing-Microsoft-Unity-Design-Pattern

亲切的问候

马修·齐隆卡

于 2012-10-04T11:47:05.677 回答
1

你能写一些看起来像单元测试的东西来验证文件 I/O 吗?绝对地。

但你可能不应该。

您希望您的单元测试非常快并且具有尽可能少的外部依赖项。文件 IO 非常慢(相对而言),并且将取决于有关文件系统的大量细节。

在您的单元测试中 - 您可能只关心您的代码是否成功调用了 Write 操作或调用了 .Close() 方法。您可以对该行为进行单元测试。

如果您真的想测试您的应用程序是否与文件系统正确交互 - 您的问题将变成关于集成测试或端到端测试;但不是单元测试。

于 2012-10-04T11:48:44.080 回答
0

这是什么意思?您能否详细说明您要完成的工作?单元测试应该只测试明确定义的单元,其职责清晰简洁,依赖尽可能少。它不应该测试任何需要引用文件系统、数据库等的操作。在这种情况下使用模拟/存根。

这是一组模拟: https ://stackoverflow.com/questions/37359/what-c​​-sharp-mocking-framework-to-use

于 2012-10-04T11:46:25.550 回答