如何单元测试阅读Excel阅读器?

Mar*_*scu 1 c# tdd unit-testing

我的ExcelReaderC#应用程序中有一个类 - 我需要将Excel电子表格导入数据库表.我的问题是,这是为数不多的未经测试的类之一 - 我不能使用"模拟输入",并且使用实际的Excel电子表格进行测试会使测试有点慢(大约一秒钟).我知道班级工作正常 - 我手动测试了 - 但我有点不安,没有自己的测试就离开它.

所以 - 我的问题是:哪一个更好:没有单元测试,慢单元测试,或者第三种方法我无法弄清楚?

[编辑]很多很棒的答案,我真的很抱歉,我只能标记一个.

Spo*_*ike 5

你可以包装ExcelReader和模拟包装器.一个简单的例子是:

                              +--------------+
                              | {interface}  |
                              | IExcelReader |
                              +--------------+
                                     ^
                                     |
                                     |
+-------------+ 1       1 +--------------------+
| ExcelReader |-----------| ExcelReaderWrapper |
|             |           |                    |
+-------------+           +--------------------+
Run Code Online (Sandbox Code Playgroud)

这样,任何需要实际的类ExcelReader都可以引用,IExcelReader而是通过它ExcelReaderWrapper或模拟注入它.它可能会创建很多类,但收益在于可以替换ExcelReader并且不会被迫编写慢速集成测试.