0

我最近從Visual Build Pro 8切換到Visual Build Pro 9,並且在構建某些測試項目時遇到問題。這似乎與各種單元測試有關,爲了測試私有方法必須使用PrivateObject類,這是我無法改變的。Visual Build Pro 9無法構建使用PrivateObject的單元測試

有問題的項目會引發以下(例子)錯誤:

RetrieveXmlControllerTest.cs(22,9): error CS0246: The type or namespace name 'RetrieveXmlController_Accessor' could not be found (are you missing a using directive or an assembly reference?) [C:\..\CorrectSubsystemTests.csproj] 

它指的是下面的代碼:

_targetAccessor = new RetrieveXmlController_Accessor(new PrivateObject(_target)); 

我試着加入微軟單元測試的dll作爲DeploymentItem(像這樣),但這也沒有幫助。

[TestInitialize] 
[DeploymentItem("Microsoft.VisualStudio.TestTools.UnitTesting.dll")] 
public void Initialise() { // Blah Blah Blah // } 

如果通過Visual Build Pro 8運行它,項目仍然正確構建,但我不明白如何。有沒有人有任何想法?

回答

0

我發現的唯一解決方案是從單元測試中刪除所有訪問器,並用調用PrivateObject替換它們。

所以RetrieveXmlController_Accessor由PrivateObject更換,PrivateObject被初始化像這樣:

_target = new RetrieveXmlController(_mockView.Object, _mockArisingFactory.Object, _mockFileHandler.Object); 

然後是PrivateObject方法代替該_Accessor提供了直接訪問使用。