MicrosoftVisualStudioTeamSystem集成了多种功能,这些功能用于创建高质量代码。其中一项功能用于实现单元编码测试。执行单元测试能够实现测试驱动开发,另一项有用的功能是测试私有方法。在本文中,首先从测试驱动开发技术开始讲解,因为这是敏捷开发人员所提倡的重点。
·测试驱动开发
在编写测试代码之前,需要进行单元测试。为此首先必须创建测试项目,然后才能生成测试。为此创建一个空白VisualStudio解决方案,然后添加C#测试项目。项目默认引用Microsoft。VisualStudio。QualityTools。UnitTestFramework程序集,以及包含单元测试的C#文件。单元测试方法和单元测试类使用〔TestMethod〕和〔TestClass〕声明,以通知VisualStudio测试框架:它们是测试的方法和类。代码如下所示:
以下是代码片段: usingMicrosoft.VisualStudio.TestTools.UnitTesting; [TestClass] publicclassUnitTests { [TestMethod] publicvoidTestMethod1() { //TODO:添加测试逻辑 } } |
假设正准备开发一个需要测试的计算器类,那么首先按照自定义规则在测试方法中调用计算器方法的代码(名称改为AddTest),代码修改如下:
以下是代码片段: [TestClass] publicclassUnitTests { [TestMethod] publicvoidAddTest() { intx=1;inty=2; intexpected=3; intactual=MyUtils.Calc.Add(x,y); Assert.AreEqual(expected,actual); } } |
Assert类有一个方法,用于指定某个条件为“是”或“否”。在这种情况下,需要指定与实际结果相等的预期结果。尝试编译该测试会失败,因为还没有编写Calc类。下面必须编写充足的代码才能通过测试。换言之,需要在同一个解决方案中创建一个类库项目,实现Calc类,并从测试项目中引用该类库项目。创建Calc类之后就可以使用从单元测试生成方法说明的功能。即将鼠标在调用Add方法上悬停片刻,就会出现“GenerateMethodStubForAdd-inMyUtils。Calc”,如图1所示:
图1 从测试生成方法说明
·运行测试
编写满足编译器的代码之后,需要运行测试。首先选择单元测试文件,然后单击工具栏的专用按钮运行测试。工具栏还提供了其他选项,例如在调试器中运行测试,或者查看测试结果。执行之后将显示测试失败,如图2所示,因为本例中VisualStudio生成Add方法的默认实现是抛出异常。现在将重新编写代码以通过测试。
图2 测试失败
以下是代码片段: publicclassCalc { publicstaticintAdd(intx,inty) { returnx+y; } } |