Rob Connery의 Asp.net MVC 매장의 라인을 따라 C#으로 장난감 웹 애플리케이션을 제작했습니다.리포지토리 인터페이스의 다양한 구현에 동일한 테스트 스위트 사용
나는, 방법과, IFooRepository 호출, 내가 저장소 인터페이스를 찾을
IQueryable<Foo> GetFoo();
void PersistFoo(Foo foo);
말 그리고 나는이 세 가지 구현이 있습니다 ISqlFooRepository, IFileFooRepostory 및 IMockFooRepository을.
또한 테스트 사례가 있습니다. 내가 뭘하고 싶고, 아직 어떻게 해야할지 모르지만,이 세 가지 구현의 각각에 대해 동일한 테스트 케이스를 실행하고 각 인터페이스 유형에 대해 각 테스트 단계마다 녹색 눈금을 지정하는 것입니다.
[TestMethod]
Public void GetFoo_NotNull_Test()
{
IFooRepository repository = GetRepository();
var results = repository. GetFoo();
Assert.IsNotNull(results);
}
이 테스트 방법을 세 가지 유형의 저장소를 사용할 수있는 환경의 변형과 함께 세 번 실행하고 싶습니다. 현재 개인 도우미 메서드의 구현에서만 다른 3 개의 잘라 붙여 넣기 테스트 클래스가 있습니다. IFooRepository GetRepository(); 분명히, 이것은 냄새 나는 것입니다.
그러나 잘라 내기 및 붙여 넣기 방법을 통합하여 중복을 제거 할 수는 없습니다. 테스트를 실행하기위한 테스트로 표시되고 공개되어야하기 때문입니다.
저는 Microsoft 테스트 프레임 워크를 사용하고 있으며 가능한 경우 그대로두기를 원합니다. 그러나 MBUnit에서이 작업을 수행하는 방법에 대한 제안은 어느 정도 흥미로울 것입니다.
좋은 답변이지만 NUnit과 RowTest를 사용하면 Rick의 대답처럼 행 테스트에서 열거 형을 사용하게됩니다. 근본적으로, 그는 RowTest를 어려운 방법으로하고 있습니다. – Anthony
글쎄, 필자는 릭보다 먼저 대답을 올렸다. 그래서 나는 그가 무엇을하고 있는지 전혀 모른다. –