小编典典

单元测试无效方法?

c#

对不返回任何内容的方法进行单元测试的最佳方法是什么?特别是在C#中。

我真正想测试的是一种采用日志文件并将其解析为特定字符串的方法。然后将字符串插入数据库中。之前没有做过什么,但是对TDD来说是非常新的,我想知道是否有可能对此进行测试,或者它是否真的没有经过测试。


阅读 277

收藏
2020-05-19

共1个答案

小编典典

如果某个方法不返回任何内容,则为以下之一

  • 必要的 -您要让对象对自己做某事..例如,更改状态(不希望任何确认..它假定将要完成)
  • 信息性 -只是通知某人某件事(没有预期的动作或响应)。

命令式方法-您可以验证任务是否实际执行。验证状态更改是否确实发生。例如

void DeductFromBalance( dAmount )

可以通过验证此消息后的余额是否确实小于初始值dAmount来进行测试

信息方法-作为对象公共接口的成员很少,因此通常不进行单元测试。但是,如果必须,您可以验证是否对通知进行了处理。例如

void OnAccountDebit( dAmount )  // emails account holder with info

可以通过验证是否已发送电子邮件进行测试

发布有关您的实际方法的更多详细信息,人们将能够更好地回答。
更新 :您的方法正在做两件事。实际上,我将其分为两个可以独立测试的方法。

string[] ExamineLogFileForX( string sFileName );
void InsertStringsIntoDatabase( string[] );

通过为第一种方法提供虚拟文件和期望的字符串,可以轻松地验证String
[]。第二个有点棘手..您可以使用Mock(在模拟框架上使用Google(模拟)框架上的Google或搜索stackoverflow)来模拟数据库,也可以命中实际的数据库并验证字符串是否插入正确的位置。检查此主题以获取一些好书…如果您处于紧要关头,我建议进行实用单元测试。
在代码中,它将像

InsertStringsIntoDatabase( ExamineLogFileForX( "c:\OMG.log" ) );
2020-05-19