InternalsVisibleTo在MSTest中无法工作

5
我已经查看了谷歌堆栈溢出,阅读了所有关于如何使 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项目是否已签名? - cre8or
Provider 在 TestInternal 中被引用。我已经成功地 首次 构建了 Provider 项目。Provider 项目没有签名。谢谢。 - dotnet-practitioner
根据微软文档,两个程序集应该都是未签名或已签名的。 - dotnet-practitioner
你能确认 TestInternal程序集 的名称,而不仅仅是命名空间吗? - Douglas
对的,还有一些与键相关的事情要做... "TestInternal" 在你的 InternalsVisibleTo 属性中是项目的名称吗?应该是...这只是巧合,它恰好与命名空间的名称匹配吗? - cre8or
1个回答

13

假设您刚刚将完全相同的代码复制并粘贴到问题中,那么这只是一个简单的打字错误。我注意到您测试程序集上的命名空间是TestInteral而没有 'N'。 而您的InternalsVisibleTo声明有最后一个 'N':

[assembly: InternalsVisibleTo("TestInternal")]

那可能就是这样。


这段代码现在可以运行了。谢谢所有给予回应的人。对于第一次尝试的人来说,这可能作为一个教程。 - dotnet-practitioner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接