幾種調(diào)試方式
◆ 內(nèi)嵌調(diào)試
所謂內(nèi)嵌調(diào)試是指在方法中有參數(shù)的情況下采取的一種簡便的調(diào)試方式。
例如我們需要調(diào)試如下方法:
public int CountAAddB(int a, int b)
{
return a + b;
}
為了調(diào)試這個方法,我們采取在方法內(nèi)部初始化參數(shù)的方法來調(diào)試。
public int CountAAddB(int a, int b)
{
a = 2;
b = 3;
return a + b;
}
然后利用TestDriven.NET 調(diào)試。
內(nèi)嵌調(diào)試是調(diào)試包含輸入?yún)?shù)的方法時,將輸入的參數(shù)在方法內(nèi)部賦值,調(diào)試/測試完畢后,再刪除內(nèi)部的賦值。這種方法相當節(jié)省時間,但是不利于重復調(diào)試/測試。
其實內(nèi)嵌調(diào)試并不能算是一種很正規(guī)的調(diào)試/測試方法,但是我們編程過程中會遇到如下問題:第一:當一個方法返回類型為void 時,你編寫單元測試代碼如何去測試其正確性?第二,當一個方法是private 時,你用單元測試工具編寫測試相當麻煩(網(wǎng)上有人寫過用反射來測試private方法,但是相當麻煩)。而內(nèi)嵌調(diào)試在方法內(nèi)部快捷而簡單。
這里我還想說一點的是,我們調(diào)試的預設(shè)值調(diào)試完畢后,注釋掉,方便下次變動的時候在此調(diào)試。這樣避免忘記調(diào)試/測試用例。
◆ 內(nèi)接調(diào)試
內(nèi)接調(diào)試是指內(nèi)部接口調(diào)試。例如我們需要測試CountAAddB 方法,我們編寫了一個新的測試方法:
public void TestCountAAddB()
{
int i = CountAAddB(1, 2);
}
然后調(diào)試這個方法,跟進到CountAAddB 方法里面。
內(nèi)接調(diào)試是編寫樁模塊來調(diào)試被調(diào)試方法,在樁模塊中斷點,然后跟進到被調(diào)試方法中。這種方法需要增加一個額外的調(diào)試方法,可以進行重復調(diào)試/測試。
這個編寫的測試方法,可以在要調(diào)試類里面,也可以在要調(diào)試類外面。
◆ 外接調(diào)試
外接調(diào)試是指外部接口調(diào)試。例如我們需要調(diào)試CountAAddB方法,這個方法在ProjectCount 中,我們新建一個新的工程TestProCount,然后在這個工程里面引用ProjectCount 工程,在新建工程TestProCount 定義調(diào)試方法TestCountAAddB,斷點后然后步進到ProjectCount工程中的CountAAddB 方法進行調(diào)試。
◆ 烤串調(diào)試
烤串調(diào)試是指測試某一個基于其它方法的基方法,像調(diào)試一串烤串。例如我們要測試如下代碼中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,通常我們調(diào)試Count方法,也完成了對CountAAddB和CountAMultiplyB的調(diào)試。