NUnit测试中属性上的MissingMethodException

时间:2012-06-06 12:38:23

标签: c# asp.net .net asp.net-mvc nunit

我遇到了测试问题。出于某种原因,我还没想到,我无法访问n对象的公共属性。

我的课程如下:

public class FakeSMTPConnector : ISMTPConnector
{
    private bool _MailSent = false;
    public bool MailSent
    {
        get { return _MailSent; }
        set { _MailSent = value; }
    }

    private MailMessage _Message = null;
    public MailMessage Message
    {
        get { return _Message; }
        set { _Message = value; }
    }


    public FakeSMTPConnector()
    {

    }

    public void SendMail(MailMessage mail)
    {
        _MailSent = true;
        _Message = mail;
    }
}

我正在使用它来模拟SMTPConnection并发送电子邮件。然后,处理电子邮件的类将使用此SMTP连接器伪造传递。

我的测试如下:

[Test]
    public void EnviarMensagemContactoSentTest()
    {
        //arrange
        FakeSMTPConnector connector = new FakeSMTPConnector();
        EmailManager manager = new EmailManager(connector);

        //act
        manager.SendMessage("a@a.com", "abc", "def", "ghi");

        //assert
        Assert.IsNotNull(manager, "Manager instance not created");
        Assert.IsTrue(connector.MailSent, "Message not sent");
        Assert.IsNotNull(connector.Message);
    }

当Nunit尝试最后一个断言时,它会消除Message属性,它失败并出现一个没有多大意义的异常:

System.MissingMethodException : Method not found: 'System.Net.Mail.MailMessage Project.FakeSMTPConnector.get_Message()'.

我做错了吗?我开始在一个项目中添加测试并进行一些重新设计,所以很多事情都是新的,可能是因为我在某些事实上基本上让我感到困惑......

谢谢!

2 个答案:

答案 0 :(得分:1)

我知道这是旧的,但我遇到了同样的问题。清洁解决方案然后进行重建对我来说不起作用。

从GAC中删除有问题的dll(C:\ Windows \ assembly)为我修复了它。

答案 1 :(得分:0)

重新启动Visual Studio帮了我这个忙。