![](/img/trans.png)
[英]How not to build before executing unit tests in Visual Studio 2010
[英]Visual Build Pro 9 fails to build Unit Tests that use PrivateObject
我最近從Visual Build Pro 8切換到了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));
我曾嘗試將Microsoft UnitTesting dll添加為DeploymentItem(像這樣),但這都無濟於事。
[TestInitialize]
[DeploymentItem("Microsoft.VisualStudio.TestTools.UnitTesting.dll")]
public void Initialise() { // Blah Blah Blah // }
如果我通過Visual Build Pro 8運行該項目,則它仍可以正確構建,但是我不知道如何。 有人有什么想法嗎?
我發現的唯一解決方案是從單元測試中刪除所有訪問器,並將其替換為對PrivateObject的調用。
因此,RetrieveXmlController_Accessor被PrivateObject取代,如下初始化PrivateObject:
_target = new RetrieveXmlController(_mockView.Object, _mockArisingFactory.Object, _mockFileHandler.Object);
然后,使用PrivateObject方法代替_Accessor提供的直接訪問。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.