我是在 VS 中使用测试项目的新手,并且正在使用 VS 2012。假设我有一个 WCF 服务,它对数据库执行读取并返回一个带有状态代码(数字)和状态消息(“成功”或“危险威尔罗宾逊”)。
作为单元测试的一部分,我不希望能够测试这些错误代码和消息是否正确返回吗?如果是这样,我将如何测试这些异常情况?
我是在 VS 中使用测试项目的新手,并且正在使用 VS 2012。假设我有一个 WCF 服务,它对数据库执行读取并返回一个带有状态代码(数字)和状态消息(“成功”或“危险威尔罗宾逊”)。
作为单元测试的一部分,我不希望能够测试这些错误代码和消息是否正确返回吗?如果是这样,我将如何测试这些异常情况?
您要测试两种类型的错误。作为结果的一部分返回的那些和作为异常发生的那些。您可以测试第一种类型,例如:
[UnitTest]
public void MethodUnderTest_ScenarioBeingTested_ResultOfTest()
{
// Arrange
string expectedError = "Danger Will Robinson";
IMySpecialService service = new FakeSpecialService();
// Act
var result = service.CallOperation(thisArgumentCausesError);
// Assert
Assert.AreEqual(expectedError, result.ReturnMessage);
}
以上将测试从某个虚构对象返回的错误消息,并将与预期的错误消息“Danger Will Robinson”进行比较;
当您想测试异常时,您可以使用类似的方法,但使用特殊属性装饰您的单元测试类:
[ExpectedException(typeof(System.DivideByZeroException))]
[UnitTest]
public void MethodUnderTest_ScenarioBeingTested_ExpectedResult()
{
// Arrange
int i = 0;
int j = 0;
IMathService service = new FakeService();
// Act
decimal result = service.PerformDivision(i, j);
// Assert
// This part is never reached because Assertion is handled by ExpectedException
}
在这种情况下,您知道将引发异常并且不会处理该异常。在这里,我们正在测试一些虚拟服务,它执行一些数学运算,比如除法。
这应该让您了解如何进行单元测试。