2012-06-06 92 views
3

我遇到了測試問題。出於某種原因,我還沒有弄清楚,我無法訪問一個n對象的公共屬性。NUnit測試中屬性的MissingMethodException

我的階級是這樣的:

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和發送電子郵件。處理電子郵件的類將使用此SMTPconnector來僞造傳送。

我的測試如下:

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

     //act 
     manager.SendMessage("[email protected]", "abc", "def", "ghi"); 

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

當NUnit的嘗試最後的斷言,即acesses Message屬性,它失敗的例外是沒有多大意義:

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

我做錯了什麼?我開始添加測試和做一些項目refoactoring很多這是有點新的,也許是我讓我困惑的東西真正的基本在我的頭...

謝謝!

+0

你試過乾淨的構建? –

+0

您可以添加命名空間和EmailManager類以及堆棧跟蹤嗎? – eyossi

+0

同意@ DanielA.White做一個完整的重建。你是否也在運行NUnit測試運行器?如果是的話,你是否確定在你構建它們之後重新加載測試? –

回答

1

我知道這是舊的,但我有同樣的問題。清潔解決方案,然後做一個重建沒有爲我工作。

從GAC(C:\ Windows \ assembly)中刪除違規dll爲我解決了這個問題。

+1

你能詳細說明一下嗎?你的意思是重新構建並沒有刪除該DLL,你必須手動刪除它重新構建? – BrDaHa