对一个不返回任何东西的方法进行单元测试的最佳方法是什么?特别是在c#中。
我真正想测试的是一个方法,它接受一个日志文件并解析它的特定字符串。然后将字符串插入到数据库中。没有什么是以前没有做过的,但对于TDD来说是非常新的,我想知道是否有可能测试这个,或者它是没有真正测试过的东西。
对一个不返回任何东西的方法进行单元测试的最佳方法是什么?特别是在c#中。
我真正想测试的是一个方法,它接受一个日志文件并解析它的特定字符串。然后将字符串插入到数据库中。没有什么是以前没有做过的,但对于TDD来说是非常新的,我想知道是否有可能测试这个,或者它是没有真正测试过的东西。
当前回答
无论你使用什么实例来调用void方法,你可以使用,验证
例如:
在我的例子中,它的_Log是实例,LogMessage是要测试的方法:
try
{
this._log.Verify(x => x.LogMessage(Logger.WillisLogLevel.Info, Logger.WillisLogger.Usage, "Created the Student with name as"), "Failure");
}
Catch
{
Assert.IsFalse(ex is Moq.MockException);
}
验证是否由于测试将失败的方法失败而抛出异常?
其他回答
它会对一个对象产生一些影响....查询效果的结果。如果没有明显的效果,就不值得进行单元测试!
无论你使用什么实例来调用void方法,你可以使用,验证
例如:
在我的例子中,它的_Log是实例,LogMessage是要测试的方法:
try
{
this._log.Verify(x => x.LogMessage(Logger.WillisLogLevel.Info, Logger.WillisLogger.Usage, "Created the Student with name as"), "Failure");
}
Catch
{
Assert.IsFalse(ex is Moq.MockException);
}
验证是否由于测试将失败的方法失败而抛出异常?
一如既往:测试该方法应该做什么!
它是否应该在某个地方改变全局状态(哎呀,代码味道!)?
它是否应该调用接口?
当使用错误的参数调用时,它是否会抛出异常?
当使用正确的参数调用时,它是否不抛出异常?
应该……吗?
使用Rhino mock来设置可能预期的调用、操作和异常。假设您可以模拟或去掉方法的某些部分。如果不了解关于方法甚至上下文的一些细节,就很难知道。
这取决于它在做什么。如果它有参数,则传入模拟,以便稍后询问是否使用正确的参数集调用了它们。