下面通过一个简单的例子来讲解VS2005是如何做代码分析的(此处所做的代码分析是在单元测试之后进行的,其分析代码仍然使用上节的做和代码)
1、上节的原始代码和单元测试代码分别如下:
//原始代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public int Add(int a,int b) //构建ADD方法
{
return a +b ;
}
private void button1_Click(object sender, EventArgs e)
{
int temp = 0;
temp=Add(Convert.ToInt32(textBox1.Text), Convert.ToInt32(textBox2.Text));//调用ADD方法
textBox3.Text = temp.ToString();
}
private void label2_Click(object sender, EventArgs e)
{
}
private void label3_Click(object sender, EventArgs e)
{
}
}
//单元测试代码
///<summary>
///Add (int, int) 的测试
///</summary>
[TestMethod()]
public void AddTest()
{
Form1 target = new Form1();
int a = 30; // TODO: 初始化为适当的值
int b = 15; // TODO: 初始化为适当的值
int expected = 45; //预期结果应该为:30+15=45
int actual;
actual = target.Add(a, b);
Assert.AreEqual(expected, actual);//预期结果与真实结果进行对比,如果相同则测试通过,否则失败
// Assert.Inconclusive("验证此测试方法的正确性。");注释该行
}
}
2、代码覆盖率分析
当创建了单元测试之后,在“解决方案资源管理器”下将会自动添加如下两个文件(localtestrun.testrunconfig和解决方案名称.vsmdi),打开“localtestrun.testrunconfig”文件,
1)配置要检测的项目,如下图:
2)配置运行
3)运行单元测试,在测试结果中鼠标单击右键,选择“代码覆盖率结果”,此时将会看到欲测试代码的覆盖率:
在代码覆盖率分析结果中,可以看到AddTest的覆盖率为:100。00%,而其中get_TestContext覆盖率为0。00%,那是因为text3文本框是用来输出数据的,而不是用来接收数据的。
3、结论
通过使用VS2005的代码覆盖率结果分析可以很容易的对程序员自己写的代码进行覆盖率的分析,但是如果想要准确知道自己的代码覆盖率是多少,则必须详细的设计测试用例,如:a、语句覆盖测试用例,b、分支覆盖测试用例,c、条件覆盖测试用例,d、分支-条件覆盖测试用例,e、条件组合覆盖测试用例,f、路径覆盖测试用例。