문제

그래서 수동 데이터베이스 작업이 많은 레거시 코드를 작업하고 있습니다.나는 여기서 약간의 품질을 유지하려고 노력하고 있으므로 가능한 한 TDD를 사용합니다.

내가 작업중인 코드는 Foo가 작동하는 데 필요한 모든 필드를 반환하는 DataReader의 유전자 태그 코드를 채워야합니다.그러나 실제로 코드가 데이터베이스 행당 하나의 목록 항목을 반환하는지 확인하려면 다음과 같은 테스트 코드를 작성합니다. 라코 디스

지루하고 쉽게 깨지는 방법도 있습니다.

결과가 부서지기 쉬운 테스트가 너무 엉망이되지 않도록이 문제에 어떻게 접근해야합니까?

Btw 저는 현재이를 위해 Rhino.Mocks를 사용하고 있지만 결과가 충분히 설득력이 있다면 변경할 수 있습니다.대안이 TypeMock이 아닌 한, 그들의 EULA는 내가 마지막으로 확인한 내 취향에 비해 너무 무서웠 기 때문입니다.

편집 : 현재 C # 2로 제한되어 있습니다.

도움이 되었습니까?

해결책

이를 덜 지루하게 만들려면 DataReader와 목록에있는 개체 간의 매핑을 캡슐화 / 리팩토링해야합니다.그 논리를 캡슐화하는 데는 몇 가지 단계가 있습니다.그것이 당신이 가고 싶은 길이라면, 내가 당신을 위해 코드를 게시 할 수 있습니다.여기에 코드를 StackOverflow에 게시하는 것이 얼마나 실용적인지 잘 모르겠지만 간결하고 요점을 유지하기 위해 기회를 줄 수 있습니다.그렇지 않으면 독자의 인덱스 접근 자에 대한 각 기대를 반복하는 지루한 작업에 갇히게됩니다.캡슐화 프로세스는 또한 문자열을 제거하고 테스트를 통해 해당 문자열을 더 재사용 할 수 있도록합니다.

또한 현재로서는 기존 코드를 얼마나 더 테스트 가능하게 만들고 싶은지 잘 모르겠습니다.이것은 테스트를 염두에두고 빌드되지 않은 레거시 코드이기 때문입니다.

다른 팁

일부 코드를 게시하려고 생각한 후 JP Boodhoo의 Nothin But .NET 과정이 생각났습니다.그는 자신의 수업 중 하나에서 만든 샘플 프로젝트 를 공유하고 있습니다.이 프로젝트는 Google 코드 에서 호스팅되며 훌륭한 리소스입니다.매핑을 리팩토링하는 방법에 대한 아이디어를 제공하고 사용할 수있는 유용한 팁이 있다고 확신합니다.전체 프로젝트는 TDD로 구축되었습니다.

Foo 인스턴스를 목록에 넣고 읽은 내용과 개체를 비교할 수 있습니다. 라코 디스

코코스,

몇 가지 문제가 있습니다.첫째, 그렇게하는 것은 내가 Foos를 먼저 구성해야한다는 것을 의미하고, 그런 다음 내가 작성하는 코드의 양을 줄이는 아무것도하지 않는 모의 판독기에 그 값을 제공해야합니다.둘째, 값이 판독기를 통과하면 Foos는 동일한 Foos (참조 평등)가 아닙니다.그것들은 같음 일 수 있지만,이 시점에서 감히 다루지 않는 너무 많은 Foo 클래스를 가정하고 있습니다.

정확히 말하자면, SQL Server에 대한 호출이 일부 데이터를 반환했는지 테스트 할 수 있기를 원합니까, 아니면 일부 데이터가있는 경우 모델에 다시 매핑 할 수 있는지 확인하고 싶습니까?

SQL 호출을 테스트하려는 경우 일부 데이터 체크 아웃을 반환했습니다. 여기

@Toran : 제가 테스트하고있는 것은 데이터베이스에서 반환 된 데이터에서 인용 부호없는 도메인 모델로의 프로그래밍 방식 매핑입니다.따라서 데이터베이스 연결을 조롱하고 싶습니다.다른 종류의 테스트는 전면 통합 테스트를 진행합니다.

@Dale : 당신이 거기에 꽤 잘 못을 박았 나 봐요. 그럴지도 몰라요.누군가가 더러운 일을하고 더 쉽게 소화 할 수있는 단계로 분해 한 기사 등에 대한 포인터가 있다면 감사하겠습니다.코드 샘플도 문제가되지 않습니다.그 문제에 접근하는 방법에 대한 단서가 있지만 실제로 감히하기 전에 다른 작업을 수행해야합니다. 테스트에 지루한 조롱이 필요한 경우에는 그렇게 할 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top