2009-07-08 3 views
2

내 자신의 제약 조건 집합을 구현할 계획이며 Constraint 클래스의 다음 메서드를 구현하는 방법을 이해하는 데 어려움을 겪고 있습니다.NUnit 2.5 Constraint.Write *() 메서드를 구현하는 올바른 방법은 무엇입니까?

public abstract class Constraint 
{ 
    public abstract void WriteDescriptionTo(MessageWriter writer); 
    public virtual void WriteMessageTo(MessageWriter writer); 
    public virtual void WriteActualValueTo(MessageWriter writer); 
} 

documentation이 그들을 사용하는 방법에 대한 좋은 아이디어를 얻을 수있는 소스 코드를 읽고 제안,하지만 난 많은 제약을 공부 한 자신의 구현에서 많은 편차를 보지 못했다 - 일반적으로 WriteDescriptionTo() 유일한 구현 방법. 내 관찰에서

: 콘솔

  • WriteActualValueTo()에 주장의 오류 메시지를 작성하기 위해 호출됩니다

    • WriteMessageTo() 콘솔
    • 에 기록 제약 조건에 부여되는 실제 매개 변수의 값을 포맷

    그러나 저는 WriteDescriptionTo()의 목적을 이해하지 못하고 왜 추상적 인 이유인지 이해하지 못합니다. 특히 WriteMessageTo()을 무시하면 충분합니다.

  • 답변

    2

    소스 코드를 보면, 실패시 제약 조건의 예상 값을 쓰는 데 WriteDescriptionTo 메서드를 사용합니다. 일반적인 두 행보기는 실패한 제약 조건을 표시하는 데 사용됩니다. 첫 번째 줄은 예상 값을 포함하고 두 번째 줄은 실제 값을 포함합니다.

    WriteDescriptionTo은 제약 조건을 강제로 적용하도록 추상화되었습니다. 방법 WriteActualValueTo은 실제 값을 쓰는 데 사용됩니다. 이것은베이스 Constraint 클래스에서 구현되고 가상으로 표시됩니다. 기본적으로 실제 실제 값을 출력하지만 가상이라는 것은 각 상속 된 제약 조건이이를 재정의하고 필요한 경우보다 구체적인 작업을 수행 할 수 있음을 의미합니다.

    +0

    Adrian에게 감사드립니다. 기본 오류 서식을 사용하려는 경우 WriteDescriptionTo() 및 WriteActualValueTo()를 재정의해야하는 것처럼 들립니다. WriteMessageTo()를 오버라이드하는 것은 다른 두 메소드의 기본 또는 비 연산 구현으로 충분 함을 의미합니다. –

    관련 문제