나는 SUT 유형 외에 여러 가지 유사한 테스트 클래스가있는 IEquatable<T>
을 구현하는 많은 모델 모음을 가지고 있습니다. 이 테스트는 테스트중인 모델에 의해 구현 된 구현 및 기타 공통적 인 측면을 검증합니다.제네릭이없는 테스트 클래스 단순화
추상 제네릭 테스트 클래스를 사용하면 많은 작업을 수행 할 수 없으며 컴파일러 과부하 해결 방법이 연산자에서 느슨해 지므로 어쨌든 각 유형에 대해 파생 테스트 클래스를 구현해야합니다.
속성을 사용하면 파생 테스트 클래스가 필요 없지만 연산자의 컴파일 시간 과부하 해결 방법은 그대로 유지됩니다.
연산자와 컴파일 시간 과부하 해결을 유지하고 테스트 메서드를 호출하는 개체의 단일 컬렉션 (형식이든 아니든)이있는 다른 접근 방법이 있습니까? 예 : InlineData
그들이 (단지 제네릭 형식 매개 변수를 사용)하지 않는만큼 아래의 예에서
MemberData
사용하지만
==
및
!=
사업자 및 시험 방법 서명을 호출 반사를 사용해야하는 것은 최적 미만.
[Theory]
[MemberData(nameof(GetModelTypes))]
public void MyTest<T>(T _)
where T : class, new()
{
var fixture = new Fixture().Customize(new AutoMoqCustomization());
// Add any known type customization's...
T t = fixture.Create<T>();
// Implement remaining generic test body.
}
public static IEnumerable<object[]> GetModelTypes() =>
{
new object[] {new ModelA()},
new object[] {new ModelB()},
/* ... */
}
누구나 객체 컬렉션을 유지 관리하고 컴파일 시간 과부하 해결 방법을 테스트 할 수있는 방법을 알고 있습니까?
좋아, 그게 못생긴 테스트 서명을 좋아하지 않았으니 그것을 향상시킵니다. 지금 나는'op_Equality'와'op_Inequality' 멤버를 얻기 위해 리플렉션을 사용합니다. 그래서 나는 그들이 유효한 결과를 내고, 거기에 단순화에 대한 생각을 내릴 수 있습니까? 나는 지금 '관용적 유인물'을 조사하고있다. – Ritmo2k
@ Ritmo2k 네, F #에서 테스트를 작성하고 일반적인 제약 조건을 사용할 수 있다고 생각합니다. C#에서는 운이 나쁘다고 생각합니다. –