我刚接触在VS中使用测试项目,并且正在使用VS 2012.假设我有一个WCF服务,它在数据库上执行读取并返回一个带有状态代码(数字)和状态消息的对象(“成功”或“危险威尔罗宾逊”)。
作为单元测试的一部分,我不希望能够测试这些错误代码和消息是否正确返回?如果是这样,我将如何测试这些异常情况?
答案 0 :(得分:0)
您要测试两种类型的错误。作为结果的一部分返回的那些以及作为例外发生的那些。您可以测试第一种类型:
[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
}
在这种情况下,您知道将引发异常并且不会处理异常。在这里,我们正在测试一些执行某些数学运算的虚构服务,例如除法。
这可以让您了解如何进行单元测试。