다음과 같은 사용자 지정 NUnit 제약이 있습니다. 그것은 (적절하게 구현 될 때) 시험은 주어진 내일 DateTime
과 동일합니다.일반적인 인수가 적용되지 않습니다.
public class TomorrowConstraint : Constraint
{
public TomorrowConstraint()
{
Description = "Tomorrow";
}
public override ConstraintResult ApplyTo<DateTime>(DateTime actual)
{
return new ConstraintResult(this, actual, true);
}
}
Type 매개 변수에 제네릭 형식이 아닌 구체적인 형식이 지정되었습니다.
는시험은 아래를 활용 : 그러나 문자열이 문제없이 메서드에 전달
[TestFixture]
public class X
{
[Test]
public void Foo()
{
Assert.That("string", new TomorrowConstraint());
}
}
나는 string
전달있어하는 DateTime
하지.
actual.GetType()
으로 유형을 보면 문자열이라는 것을 알 수 있습니다 : {Name = "String" FullName = "System.String"}
.
어떻게 된 일입니까?
나는 어딘가에 예외가 있다고 생각 했겠습니까? 좋아
당신은 DateTime''에 대해서 typeof'actual' 구속되지 않은 : 당신이 할 수있는 것은 그 방법의
DateTime
버전을 호출하는 다른 방법이 당신의 단위 테스트를 위해 그것을 사용하는 것입니다 제네릭 매개 변수를'ApplyTo''DateTime'에 추가합니다. 대신 'T'라고 부르는 경우에도 똑같이 작동합니다. 'actual'에있는'DateTime' 멤버들 ('object'에 의해 정의 된 멤버들 옆)에 접근하려고 시도하면 타입 오류가 발생합니다. – Lee