单元测试无效方法?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (12)

单元测试的最佳方法是什么?一个不返回任何东西的方法是什么?特别是在c#中。

我真正想要测试的是一个获取日志文件并将其解析为特定字符串的方法。然后将字符串插入到数据库中。以前没有做过的事情,但是对于TDD来说是非常新的,我想知道是否有可能测试这个,或者它是不是真的没有经过测试。

提问于
用户回答回答于

如果一个方法不返回任何内容,则它是以下任一项之一

  • 要么要求对象对自己做一些事情,例如更改状态。
  • 只是通知某人事情发生了。

命令式方法:可以验证任务是否实际执行,验证是否确实发生了状态更改。

void DeductFromBalance( dAmount ) 

可以通过验证Balance POST此消息是否确实小于dA挂载的初始值来测试

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

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

可以通过验证电子邮件是否正在发送来进行测试。

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

String[]可以通过向第一个方法提供一个虚拟文件和预期的字符串来很容易地进行验证。第二种方法有点棘手,可以使用模拟库(Google或模拟框架上的搜索堆栈溢出)来模拟DB,或者点击实际的DB,并验证字符串是否插入到正确的位置。

InsertStringsIntoDatabase( ExamineLogFileForX( "c:\OMG.log" ) );
用户回答回答于

测试它的副作用,这包括:

  • 它会抛出任何异常吗?
  • 它能很好地发挥它的参数吗?
  • 它对调用对象/类型的状态有正确的影响吗?

扫码关注云+社区