【问题标题】:Visual Build Pro 9 fails to build Unit Tests that use PrivateObjectVisual Build Pro 9 无法构建使用 PrivateObject 的单元测试
【发布时间】:2017-07-24 15:00:22
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    所以 RetrieveXmlController_Accessor 被 PrivateObject 替换,PrivateObject 的初始化如下:

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

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

    【讨论】:

      猜你喜欢
      • 2013-03-22
      • 2016-07-08
      • 1970-01-01
      • 2021-01-27
      • 1970-01-01
      • 1970-01-01
      • 2010-10-27
      • 1970-01-01
      • 2012-01-13
      相关资源
      最近更新 更多