구현을 테스트하기 위해 추상 메소드를 사용하여 기본 테스트 클래스를 생성 한 다음 테스트 할 파생 클래스마다 파생 인스턴스를 생성 할 수 있습니다. 이
[TestClass]
public abstract class TestBase
{
protected abstract IMyInterface GetObjectToTest();
[Test]
public void TestMethod()
{
IMyInterface objectToTest = GetObjectToTest();
//Do your generic test of all implementations of IMyInterface
objectToTest.Setup();
//...
Assert.Equal(objectToTest.Property,100);
//etc
}
}
[TestClass]
public class ConcreteTestClass : TestBase
{
protected override GetObjectToTest()
{
return new ConcreteImplementationOfIMyObject();
}
[Test]
public void TestConcreteImplementationOfIMyObjectSpecificMethod()
{
//test method for stuff which only applies to ConcreteImplementationOfIMyObject types
}
}
같은
뭔가 있다는 점에서 특정 구현에 고유 한 모든 테스트를 넣어 그런 다음 기본 클래스에서 인터페이스의 모든 인스턴스에 적용하여 모든 테스트를 넣고,이 방법을 사용하여 테스트 클래스.
주어진 파생 클래스의 특정 구현 이외에 어떤 테스트를 수행 하시겠습니까? –
모든 파생 클래스가 구현해야하는 계약을 테스트하고 싶습니다. 파생 클래스 각각에 대해 테스트를 작성하면 클래스 이름을 제외하고는 똑같은 코드가됩니다. –