Unit testing 我如何测试一个;“错误”;在VisualStudio测试项目中
我刚开始在VS中使用测试项目,现在正在使用VS2012。假设我有一个WCF服务,它对数据库执行读取,并返回一个带有状态代码(数字)和状态消息(“Success”或“Danger Will Robinson”)的对象Unit testing 我如何测试一个;“错误”;在VisualStudio测试项目中,unit-testing,visual-studio-2012,Unit Testing,Visual Studio 2012,我刚开始在VS中使用测试项目,现在正在使用VS2012。假设我有一个WCF服务,它对数据库执行读取,并返回一个带有状态代码(数字)和状态消息(“Success”或“Danger Will Robinson”)的对象 作为单元测试的一部分,我不希望能够测试这些错误代码和消息是否正确返回吗?如果是这样,我将如何测试这些异常情况?有两种类型的错误需要测试。作为结果的一部分返回的和作为异常发生的。您可以测试第一种类型,如: [UnitTest] public void MethodUnderTest_S
作为单元测试的一部分,我不希望能够测试这些错误代码和消息是否正确返回吗?如果是这样,我将如何测试这些异常情况?有两种类型的错误需要测试。作为结果的一部分返回的和作为异常发生的。您可以测试第一种类型,如:
[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
}
在这种情况下,您知道将引发一个异常,并且不会处理该异常。在这里,我们正在测试一些执行一些数学运算的虚拟服务,比如除法
这将让您了解如何进行单元测试。非常好地回答了大家的问题,谢谢!所以我唯一的问题是。。。如果我拥有的服务不接受任何参数,该怎么办。我的服务就像“GetUserNames()”一样简单,它只返回一个数据列表。我是说,这是一个人能创造的最简单的服务。。我正试图想出一种方法,使服务保持简单,而不必仅仅为了单元测试而“添加”功能。。知道我的意思吗?如果您需要为单元测试“仅仅”添加功能,那么这个功能可能一直都属于这里。当出现问题时,这个附加功能是否会引发异常?如果是这样的话,如果您正在测试的东西出了问题,您不想在您的生产环境中这样做吗?谢谢大家的帮助。最后,我能够遵循这个模型,并提供了几个测试来验证成功和失败方法。