我最近从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运行它,项目仍然可以正确构建,但我不明白如何。有没有人有任何想法?
答案 0 :(得分:0)
我找到的唯一解决方案是从单元测试中删除所有Accessor,并将其替换为对PrivateObject的调用。
所以RetrieveXmlController_Accessor被PrivateObject取代,PrivateObject初始化如下:
_target = new RetrieveXmlController(_mockView.Object, _mockArisingFactory.Object, _mockFileHandler.Object);
然后使用PrivateObject方法代替_Accessor提供的直接访问。