【发布时间】:2014-04-16 15:19:06
【问题描述】:
作为单元测试的初学者。我观察到的每个示例都比较了测试方法的输出 有期望值
Assert(expected,actual);
我无法理解如果方法没有任何返回类型,那么我无法在单元测试中测试这些方法。 意味着如果我必须编写单元测试,那么我们必须编写这样一个返回类型不是 void 的方法。
【问题讨论】:
标签: unit-testing c#-4.0
作为单元测试的初学者。我观察到的每个示例都比较了测试方法的输出 有期望值
Assert(expected,actual);
我无法理解如果方法没有任何返回类型,那么我无法在单元测试中测试这些方法。 意味着如果我必须编写单元测试,那么我们必须编写这样一个返回类型不是 void 的方法。
【问题讨论】:
标签: unit-testing c#-4.0
信不信由你,您仍然可以测试很多东西,例如检查是否引发异常:
Assert.DoesNotThrow(() => MyMethod(validParametersHere));
您可以使用ExpectedException、Assert.Throws 或Assert.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);
【讨论】: