2012-06-06 3 views
3

테스트에 문제가 있습니다. 어떤 이유로, 내가 알아 내지 못했지만, 객체의 공개 속성에 액세스 할 수 없습니다. 내가 SMTPConnection을 시뮬레이션하고 전자 메일 메시지를 보내려면이 사용하고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; 
    } 
} 

:

내 클래스는 다음과 같다. 전자 메일 메시지를 처리하는 클래스는이 SMTP 커넥터를 사용하여 배달을 위조합니다. 다음과 같이

내 시험은 다음과 같습니다

[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 마지막 어설, 시도 할 때, 훨씬 이해가되지 않습니다 예외와 함께 실패

:

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

을 내가 뭐 잘못하고 있니? 나는 테스트를 추가하고 프로젝트에 리팩토링을하기 시작했습니다. 많은 부분이 너무 새로워서 제 머리 속에서 뭔가 근본적인 것으로 혼란 스럽습니다.

고마워요!

+0

깨끗한 빌드를 사용해 보셨습니까? –

+0

네임 스페이스와 EmailManager 클래스 및 스택 추적을 추가 할 수 있습니까? – eyossi

+0

@ DanielA.White와 (과) 일치하면 전체 재구성 작업을 수행 할 수 있습니다. 또한 NUnit 테스트 러너를 실행 중입니까? 그렇다면 빌드 한 후에 테스트를 다시로드하는지 확인 했습니까? –

답변

1

나는 이것이 오래되었음을 알고 있지만, 나는 같은 문제가 있었다. 솔루션을 청소 한 다음 재구성 작업을 수행해도 문제가 해결되지 않았습니다.

GAC (C : \ Windows \ assembly)에서 문제의 DLL을 제거하면 문제가 해결되었습니다.

+1

당신은 정교 할 수 있습니까? 다시 빌드가 dll을 제거하지 못했음을 의미합니까? 다시 빌드하기 위해 수동으로 제거해야합니다. – BrDaHa

관련 문제