【问题标题】:InternalsVisibleTo not working for MSTestInternalsVisibleTo 不适用于 MSTest
【发布时间】:2012-05-14 17:58:51
【问题描述】:

我查看了 googlestack over flow 并阅读了有关如何让 InternalsVisibleTo 工作的所有帖子。

但它对我不起作用。

请不要对这个问题投反对票,因为我已尽力在论坛上查看并实施答案..

我的代码如下:

* TestInternal 项目内部 *

namespace TestInteral
{
    [TestClass]
    public class MyProviderTest
    {
        [TestMethod]
        public void TestBar()
        {
            bool retval = false;

            retval = new MyProviderClass().Bar();

            Assert.AreEqual(true,retval);
        }

    }
}

* 提供者项目内部 *

[assembly: InternalsVisibleTo("TestInternal")]
namespace Provider
{

    public class MyProviderClass
    {
        internal bool Bar()
        {
            return true;

        }

        private void UseBar()
        {
            bool retval = Bar();

        }
    }
}

我的测试课出现以下错误。

错误 1“Provider.MyProviderClass”不包含“Bar”的定义,并且找不到接受“Provider.MyProviderClass”类型的第一个参数的扩展方法“Bar”(您是否缺少 using 指令还是程序集参考?)

请告诉我如何正确使用 InternalsVisibleTo,以便正确测试 MyProviderClass 中的 Internal 方法。

谢谢

【问题讨论】:

  • 您确定在TestInternal 中引用了Provider 项目吗?您是否尝试先构建 Provider 项目? Provider 项目是否已签名?
  • Provider 在 TestInternal 中被引用。我成功地first 构建了Provider Project。提供者项目未签名。谢谢..
  • 根据 MS 文档,两个程序集都应该是未签名的或已签名的
  • 您能否确认TestInteral程序集 的名称,而不仅仅是命名空间?
  • 对,还有一些与键有关的东西...... InternalsVisibleTo 属性中的“TestInternal”是项目的名称吗?应该是……那么巧合的是它与命名空间的名称匹配?

标签: c# unit-testing mstest


【解决方案1】:

假设您刚刚将您的 EXACT 代码复制并粘贴到问题中,这是一个简单的错字。我注意到您在测试程序集中的命名空间是TestInteral,没有“N”。而你的InternalsVisibleTo 声明的最后一个是“N”:

[assembly: InternalsVisibleTo("TestInternal")]

大概就是这样。

【讨论】:

  • 这段代码现在可以运行了..感谢所有回复的人..这可以用作第一次尝试它的教程。
猜你喜欢
  • 2010-09-29
  • 1970-01-01
  • 1970-01-01
  • 2019-12-17
  • 1970-01-01
  • 2012-01-15
  • 1970-01-01
  • 2013-09-21
  • 2017-03-10
相关资源
最近更新 更多