幾種調試方式
◆ 內嵌調試
所謂內嵌調試是指在方法中有參數的情況下采取的一種簡便的調試方式。
例如我們需要調試如下方法:
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的調試。