几种调试方式
◆ 内嵌调试
所谓内嵌调试是指在方法中有参数的情况下采取的一种简便的调试方式。
例如我们需要调试如下方法:
public int CountAAddB(int a, int b)
{
return a + b;
}
为了调试这个方法,我们采取在方法内部初始化参数的方法来调试。
public int CountAAddB(int a, int b)
{
a = 2;
b = 3;
return a + b;
}
然后利用TestDriven.NET 调试。
内嵌调试是调试包含输入参数的方法时,将输入的参数在方法内部赋值,调试/测试完毕后,再删除内部的赋值。这种方法相当节省时间,但是不利于重复调试/测试。
其实内嵌调试并不能算是一种很正规的调试/测试方法,但是我们编程过程中会遇到如下问题:第一:当一个方法返回类型为void 时,你编写单元测试代码如何去测试其正确性?第二,当一个方法是private 时,你用单元测试工具编写测试相当麻烦(网上有人写过用反射来测试private方法,但是相当麻烦)。而内嵌调试在方法内部快捷而简单。
这里我还想说一点的是,我们调试的预设值调试完毕后,注释掉,方便下次变动的时候在此调试。这样避免忘记调试/测试用例。
◆ 内接调试
内接调试是指内部接口调试。例如我们需要测试CountAAddB 方法,我们编写了一个新的测试方法:
public void TestCountAAddB()
{
int i = CountAAddB(1, 2);
}
然后调试这个方法,跟进到CountAAddB 方法里面。
内接调试是编写桩模块来调试被调试方法,在桩模块中断点,然后跟进到被调试方法中。这种方法需要增加一个额外的调试方法,可以进行重复调试/测试。
这个编写的测试方法,可以在要调试类里面,也可以在要调试类外面。
◆ 外接调试
外接调试是指外部接口调试。例如我们需要调试CountAAddB方法,这个方法在ProjectCount 中,我们新建一个新的工程TestProCount,然后在这个工程里面引用ProjectCount 工程,在新建工程TestProCount 定义调试方法TestCountAAddB,断点后然后步进到ProjectCount工程中的CountAAddB 方法进行调试。
◆ 烤串调试
烤串调试是指测试某一个基于其它方法的基方法,像调试一串烤串。例如我们要测试如下代码中Count方法:
public int CountAAddB(int a, int b)
{
return a + b;
}
public int CountAMultiplyB(int a, int b)
{
return a * b;
}
public void Count()
{
int i = CountAAddB(1, 2);
int j = CountAMultiplyB(3, 4);
int ij = i + j;
}
Count 方法应用了两个方法:CountAAddB和CountAMultiplyB,通常我们调试Count方法,也完成了对CountAAddB和CountAMultiplyB的调试。