我如何测试“if(somecondition)return”;声明?

时间:2009-10-05 09:17:46

标签: visual-studio-2008 unit-testing

在VS 2008中使用NUnit 2.5,我不确定如何在设置某些条件时简单地测试该函数return;。是否存在符合我目的的Assert方法,或者这是不可测试的?

4 个答案:

答案 0 :(得分:4)

嗯,大概是函数简单地返回之间有一些可观察到的区别,并且它在返回之前做了一些事情。测试可观察到的差异。

如果不是它只是返回它之间的可观察差异而它没有这样做,那么你要么处理一般的“难以测试”的代码(例如缓存),其中效果是非功能性的,或者你应该问问自己为什么你首先得到了这些代码。

答案 1 :(得分:1)

return声明之后的代码是什么?它会修改任何数据吗?我通常会检查在> 语句后操作的数据是否未触及。

举个例子,如果我基于节点名称上的某些条件递归遍历树,我将明确检查

    访问了应该访问过的
  1. 节点,
  2. 访问的节点已访问过。

答案 2 :(得分:0)

也许您应该考虑使用模拟对象?

例如使用Moq,您可以这样:

// Called at least once
mock.Verify(foo => foo.Execute("ping"), Times.AtLeastOnce());

答案 3 :(得分:0)

当你有一个函数时,你会遇到这种事情,它的唯一工作是接受一个或多个对象,委托一些调用,然后返回。

测试的方法是使用Mocks - 创建传入对象的模拟,检查模拟以确保实际进行了预期的调用(这是您的函数的目的)。

如果在返回之前未进行预期的调用,则测试将失败,否则将通过。

请注意,这种测试非常接近于对实施的了解。