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