VS2005對私有方法的單元進行測試

2021-06-15 20:13:49 字數 2136 閱讀 4716

使用 visual studio 對 公共方法進行單元測試,跟以前 nunit 一樣,都是引用需要的類,然後對公共方法進行測試

使用 visual studio 對公共方法進行單元測試,跟以前 nunit 一樣,都是引用需要的類,然後對公共方法進行測試。

但是 visual studio 還可以對類的私有方法進行測試。而visual studio 不允許測試**跟實際**放在乙個專案中,我們來看看是visual studio unittest如何做的。

比如我們有這樣乙個私有方法

namespace classlibrary1}}

我們只要在這個私有方法的右鍵選單中選擇 建立單元測試,系統就自動產生了這個私有方法的單元測試**。

下面我們來分析產生的單元測試**,看visual studio unittest 是如何對私有方法進行單元測試的

簡單來說,visual studio unittest 生成私有方法的單元測試時,將自動建立乙個私有訪問器。私有訪問器是測試方法用於訪問私有**的方法。單元測試生成對私有訪問器的呼叫,然後通過私有訪問器來呼叫私有方法。私有訪問器駐留在測試專案中的檔案中;因此將被編譯為測試專案程式集。

具體來看測試專案:

首先我們可以看到乙個名為 vscodegenaccessors.cs 的新檔案被建立,

這個檔案包含兩個類:

internal 型別的 baseaccessor 類 和 派生自它的 classlibrary1_divisionclassaccessor 類

baseaccessor 類 是通用的訪問器基類。

classlibrary1_divisionclassaccessor 類 則是對你要訪問類的私有方法進行了反射封裝,這樣你就可以通過操作這個類來操作該私有方法了。如下面**:

using microsoft.visualstudio.testtools.unittesting;

namespace testproject1

protected baseaccessor(microsoft.visualstudio.testtools.unittesting.privatetype type) :

this(null, type) {}

internal virtual object target

}public override string tostring()

public override bool equals(object obj)

return this.target.equals(obj);

}public override int gethashcode()

}[system.diagnostics.debuggerstepthrough()]

[system.codedom.compiler.generatedcodeattribute("microsoft.visualstudio.testtools.unittestgeneration", "1.0.0.0")]

internal class classlibrary1_divisionclassaccessor : baseaccessor

internal int divide_private(int numerator, int denominator) ;

int ret = ((int)(m_privateobject.invoke("divide_private", new system.type , args)));

return ret;} }

} 注意:當您更改正在測試的**檔案中的私有方法時,這個訪問器可能無法正常工作,需要重新生成專用訪問器(classlibrary1_divisionclassaccessor 類)。

這個訪問器,是通過反射的方式實現的。

vsut利用自動**生成技術,在單元測試專案中先來給你要測試的類生成乙個名字叫***accessor的訪問器。

這個訪問器會把需要測試類的需要測試的私有方法暴露出來,這種方式,無論是私有還是公共的屬性和方法。這種方式可以很方便的給測試方法搭建測試環境,mock物件的注入也容易了。在測試呼叫的時候,就簡單的只有下面的**了:

[deploymentitem("classlibrary1.dll")]

[testmethod()]

public void divide_privatetest()

qt配置vs2005的方法

在visual studio 2005中安裝qt 4.3.2 1.正常安裝visual studio 2005,只要安裝了c 即可.注意 不是express版本.3.解壓 目錄結構建議 c qt 4.3 打算用其他編譯環境 c qt 4.3 msvc2005 如過你打算用visual studio ...

VS2005遠端除錯的方法

1 遠端端 安裝 vs2005 光碟 x vs remote debugger x86 rdbgsetup.exe 或者直接執行或 copy 本地端的 program files microsoft visual studio 8 common7 ide remote debugger x86 2 ...

qt配置vs2005的方法

待驗證 qtmicrosoft opensource makefile express tools 在visual studio 2005中安裝qt 4.3.2 1.正常安裝visual studio 2005,只要安裝了c 即可.注意 不是express版本.3.解壓 目錄結構建議 c qt 4....