데이터 객체 컬렉션을 생성하는 방법을 테스트하고 있습니다. 객체의 속성이 올바르게 설정되어 있는지 확인하고 싶습니다. 일부 속성은 동일한 것으로 설정됩니다. 나머지는 컬렉션에서의 위치에 따라 다른 값으로 설정됩니다. 이 작업을 수행하는 자연스러운 방법은 반복되는 것 같습니다. 그러나 Roy Osherove는 단위 테스트에서 로직 사용을 강력히 권장합니다 ( Art of Unit Testing , 178). 그는 말한다 :
논리가 포함 된 테스트는 일반적으로 한 번에 두 가지 이상을 테스트하는 것으로 테스트가 덜 읽기 쉽고 취약하기 때문에 권장되지 않습니다. 그러나 테스트 로직은 숨겨진 버그를 포함 할 수있는 복잡성을 추가합니다.
일반적으로 테스트는 제어 흐름이없고 짝수도 아니고
try-catch
어설 션 호출 이있는 일련의 메서드 호출이어야 합니다.
그러나 디자인에 문제가있는 것을 볼 수 없습니다 (데이터 객체 목록을 생성하는 방법, 일부는 값이 시퀀스의 위치에 따라 달라지는가? — 정확히 별도로 생성 및 테스트 할 수 없음). 내 디자인에 테스트에 친화적이지 않은 것이 있습니까? 아니면 Osherove의 가르침에 너무 단단하게 헌신하고 있습니까? 아니면이 문제를 피할 수있는 비밀 단위 테스트 마술이 있습니까? (C # / VS2010 / NUnit으로 작성하고 있지만 가능하면 언어에 구애받지 않는 답변을 찾고 있습니다.)
in
테스트가 "기존 콜렉션에 성공적으로 추가되었습니다"인 경우 루프 (또는 Python과 같은 언어 기능)를 작성하여이를 사용할 수 없습니다 .
toString()
Collection 만 있고 그것이 있어야하는 것과 비교됩니다. 간단하고 작동합니다.