【发布时间】:2011-08-14 14:31:41
【问题描述】:
【问题讨论】:
-
如果方法没有返回任何东西,你到底在测试什么?副作用?它抛出/不抛出异常?
标签: c#
【问题讨论】:
标签: c#
你可以确保它不会抛出,至少是
Assert.DoesNotThrow<ExceptionType>( () => myClass.myMethod() );
但是,请记住,不返回值但执行某些操作的方法依赖于副作用,因此实际上不适合单元测试,因为您无法在单元测试中测试系统的整个状态.
【讨论】:
您可以模拟您的方法调用的某些方法和类,并断言它们被调用。您可以为此目的使用一些模拟框架,它们中的大多数都具有测试功能:Assert.IsCalled();
您还可以断言满足了预期的某些环境变化。例如,创建了一个文件。
【讨论】:
如果它在传递正确的参数值(如果有)时没有抛出异常,那么它通过了。如果它在传递无效值时抛出正确的异常,那么它就会通过。
【讨论】: