Visual Build Pro 9无法构建使用PrivateObject

时间:2017-07-24 15:00:22

标签: c# unit-testing visual-build-professional visualstudio.testtools

我最近从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运行它,项目仍然可以正确构建,但我不明白如何。有没有人有任何想法?

1 个答案:

答案 0 :(得分:0)

我找到的唯一解决方案是从单元测试中删除所有Accessor,并将其替换为对PrivateObject的调用。

所以RetrieveXmlController_Accessor被PrivateObject取代,PrivateObject初始化如下:

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

然后使用PrivateObject方法代替_Accessor提供的直接访问。