在VS 2008中使用NUnit 2.5,我不确定如何在设置某些条件时简单地测试该函数return;
。是否存在符合我目的的Assert
方法,或者这是不可测试的?
答案 0 :(得分:4)
嗯,大概是函数简单地返回之间有一些可观察到的区别,并且它在返回之前做了一些事情。测试可观察到的差异。
如果不是它只是返回它之间的可观察差异而它没有这样做,那么你要么处理一般的“难以测试”的代码(例如缓存),其中效果是非功能性的,或者你应该问问自己为什么你首先得到了这些代码。
答案 1 :(得分:1)
return
声明之后的代码是什么?它会修改任何数据吗?我通常会检查在>> 语句后操作的数据是否未触及。
举个例子,如果我基于节点名称上的某些条件递归遍历树,我将明确检查
答案 2 :(得分:0)
也许您应该考虑使用模拟对象?
例如使用Moq,您可以这样:
// Called at least once
mock.Verify(foo => foo.Execute("ping"), Times.AtLeastOnce());
答案 3 :(得分:0)
当你有一个函数时,你会遇到这种事情,它的唯一工作是接受一个或多个对象,委托一些调用,然后返回。
测试的方法是使用Mocks - 创建传入对象的模拟,检查模拟以确保实际进行了预期的调用(这是您的函数的目的)。
如果在返回之前未进行预期的调用,则测试将失败,否则将通过。
请注意,这种测试非常接近于对实施的了解。