具有返回类型的方法的单元测试

时间:2014-03-12 13:01:06

标签: unit-testing c#-4.0

作为单元测试的初学者。我观察到的每个例子都是测试方法比较输出 预期值

 Assert(expected,actual);

我无法理解方法是否没有任何返回类型然后我无法测试单元测试这些方法。 意味着如果我必须编写单元测试,那么我们必须编写一个返回类型不是void的方法。

1 个答案:

答案 0 :(得分:1)

信不信由你,还有很多可以测试,例如检查没有引发异常:

Assert.DoesNotThrow(() => MyMethod(validParametersHere));

您可以使用ExpectedExceptionAssert.ThrowsAssert.Catch来测试负面情景:

Assert.Throws<InvalidOperationException>(() => MyMethod(invalidParametersHere));

大多数单元测试框架还允许您测量方法所需的时间是否在范围内(例如NUnit的TimeOutAttribute)。

此外,您可以使用模拟框架来观察被测试的方法如何与其依赖项交互,例如与Moq

var dep = new Mock<IMyDependency>();
var classBeingTested = new MyClass(dep.Object);

classBeingTested.MyMethod();

dep.Verify(x => x.MethodWhichMyClassShouldHaveCalled(), Times.Once);
dep.Verify(x => x.MethodWhichMyClassShouldNotHaveCalled(), Times.Never);