【问题标题】:for internal method test case method is not accessible对于内部方法测试用例方法不可访问
【发布时间】:2013-02-12 23:10:33
【问题描述】:

我正在为我的内部方法编写单元测试用例。我在我的邮件类项目的 AssemblyInfo.cs 中进行了必要的更改 [程序集:InternalsVisibleTo("myunitest_assemblyname")]

现在我可以在单元测试用例方法中访问我的内部方法。 但是当我编译代码时出现如下错误

错误 1“主类项目名称”不包含“流程”的定义,并且找不到接受“主类项目名称”类型的第一个参数的扩展方法“流程”(您是否缺少 using 指令或程序集参考?)

我的主类有很强的名字。

如果我错过了某个点,那就太好了。

主类结构

namespace Renewals
{
    public class StateProcessor
    {
        internal virtual void PutEmailInQueue(DataTable dataTable)
        {    
        }
    }
}

//测试类结构

namespace Renewals.Tests.Unit
{
    [TestClass]
    public class StateProcessorTest
    {

        [TestMethod]
        public void PutEmailInQueueTest()
        {
            DateTime processingDate = Convert.ToDateTime("27-feb-2013"); ;

            StateProcessor stateProcess = new StateProcessor(processingDate);
            stateProcess.PutEmailInQueue(new DataTable());
        }
    }
}

PutEmailInQueue - 这个方法给我带来了问题。

【问题讨论】:

  • 请贴出你的一些源代码。
  • 根据您的要求更新
  • 嗯。 “流程”在哪里引用?
  • 我已经更改了上面的实际名称,并且错误地将“Process”考虑为“StateProcessor”。
  • 您是否尝试过“使用续订;”单元测试源文件中的语句?

标签: unit-testing c#-4.0


【解决方案1】:

您写道,您的班级使用强名称。

我认为您必须使用公钥修改 InternalsVisibleTo() 语句。

例如为:[组件:InternalsVisibleTo( “friend_signed_B,公钥= 0024000004800000940000000602000000240000525341310004000001000100e3aedce99b7e10823920206f8e46cd5558b4ec7345bd1a5b201ffe71660625dcb8f9a08687d881c8f65a0dcf042f81475d2e88f3e3e273c8311ee40f952db306c02fbfc5d8bc6ee1e924e6ec8fe8c01932e0648a0d3e5695134af3bb7fab370d3012d083fa6b83179dd3d031053f72fc1f7da8459140b0af5afc4d2804deccb6”)] P>

更多信息请见:http://msdn.microsoft.com/en-us/library/bb385180.aspx

【讨论】:

  • 不应要求 InternalsVisibleTo 的强名称。它只需要作为一种安全功能来防止恶意用户使用具有相同文件名的程序集访问您的代码。
  • 如果我没有设置公钥,我会得到一个编译器错误:'Friend assembly reference 无效。强名称签名的程序集必须在其 InternalsVisibleTo 声明中指定一个公钥。´ 另请参阅:msdn.microsoft.com/en-us/library/bb763089.aspx
  • 啊!我通常走相反的路线——我让未签名的程序集引用了签名的程序集而没有指定密钥。所以,呃——这是一个编译器错误,这很好。这个不起眼的馅饼很好吃。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多