2009-10-14 3 views
2

다른 동료가 작성한 프로젝트의 단위 테스트를 작성해야합니다. 그는 일반 목록 클래스를 만들었습니다. 이제는 클래스에 대한 unittest를 만드는 가장 좋은 방법과 반복적 인 코드를 피하는 방법에 대해 생각하고 있습니다. List 클래스는 String, Integer 및 기타 다른 유형으로 인스 턴 스할 수 있습니다. 어떻게 이러한 각 유형에 대한 testclass를 작성하지 않고 대신 모든 데이터 유형에 대해 하나의 testclass를 사용합니까?일반 수업을위한 Unittest 쓰기 ... 최선의 접근 방식?

감사 패트릭

+1

좋아, 내가 물어볼거야. 왜 동료가 목록 바퀴를 재발 명 했지? 나는 단지 궁금하다. – cletus

+1

더 중요한 것은 단위 테스트가 필요한 경우 왜 동료가 배팅을하지 않았을까요? –

답변

4

합니까 당신이 자신의 유형에 따라 어떤 특별한 방법으로 자사의 포함 된 요소를 치료 테스트하는 클래스? String과 Integer의 인스턴스를 동일하게 처리하면 String으로 한번 테스트하고 Integer가 정상적으로 작동한다고 가정합니다.

단위 테스트는 예상되는 동작에 크게 의존합니다.

0

JUnit4에는 모든 다른 유형에 대해 하나의 테스트를 작성할 수있는 매개 변수가있는 러너가 있습니다. 이것은 다른 유형간에 실질적인 동작 차이가 없다고 가정하므로 테스트에서 클래스를 같은 방식으로 사용할 수 있습니다.

그런데 나는 그 질문의 근본적인 상황이 매우 기괴하다는 의견을 되풀이해야합니다. JDK에는 많은 목록 구현이 있으며이 목적을 위해 클래스를 작성하는 것은 매우 이상합니다.

+0

목록에는 변경 사항을 실행 취소 할 수있는 기능이 있습니다. 그는 프로젝트를 위해 그것을 필요로했다. 왜 테스트를 작성합니까? 저의 동료들은 그와 함께 일한 적이 없었습니다. (그들은 그런 요술을 싫어했습니다. ;-)) 그리고 저는 (회사의 새로운 사람) 조금 더 주제를 연구했습니다. 그래서 보스는 unittest를 작성하여 그의 동료 프로젝트에서 동료를 지원하라고 말했습니다. Junit과 같은 프레임 워크를 사용하면 얻을 수있는 이점을 보여 주기도합니다. – Patrick

2

예상 한 동작을 테스트해야하는 Max A.에 동의합니다. 제네릭 클래스가 다른 매개 변수화 된 형식에 대해 다르게 동작하는 경우이를 테스트해야합니다. 그렇지 않으면 한 가지 유형의 테스트가 적절해야합니다.

또한 모든 유형에 대해 일반 클래스를 인스턴스화 할 수 있다고 주장하려는 경우 Object 클래스를 인스턴스화하는 테스트를 작성해야 할 수 있습니다. 이것은 컴파일 할 때 "통과합니다"라는 다소 이상한 테스트가 될 수 있습니다.하지만 테스트를 시스템 예상 동작의 회귀로 유지하면 테스트가 매개 변수화 될 일반 클래스를 변경하는 사람을 방지 할 수 있습니다. <T extends YYY>.

+0

유용한 힌트를 제공해 주셔서 감사합니다! :-) – Patrick

관련 문제