단위테스트 안티패턴 모음
단위테스트 안티패턴
1. 비공개 메서드 단위테스트
- private 메서드를 단위테스트 해야하는가?
- 비공개 메서드를 직접 테스트 하기보다는, 포괄적인 메서드 호출로 간접적으로 테스트 하는것이 좋다.
- 비공개 메서드가 너무 복잡하다면, 별도 클래스로 도출해야하는 리팩토링 징후로 볼 수 있다.
2. 테스트를 위한 비공개 상태(필드) 공개
- 테스트만을 위해 비공개 상태를 공개시키는것이 타당할까?
- 테스트는 제품코드와 정확히 같은 방식으로 대상 시스템과 상호작용해야하고 특별한 권한이 있으면 안된다.
3. 도메인 로직을 테스트에서 유출
- 도메인 내부 로직을 테스트에서 그대로 수행, 비교하는것이 좋은 테스트 방식일까?
- 제품코드의 알고리즘은 프로덕션 코드 도메인로직에만 두어야한다.
- 테스트에서는 내부로직이 아닌, 결과를 검증하는것이 좋다.
4. 테스트만을 위한 코드 추가
- 프로덕션 코드에 테스트만을 위한 코드를 추가해도 괜찮을까?
- 프로덕션 코드에 테스트코드와 제품코드가 혼재되어 관리비용이 증가하게 된다.
- 필요하다면, interface 화 해서 테스트만을 위한 상속 구현체를 만들어라
5. 구체 클래스를 mocking 하기
- 인터페이스가 아닌 구체 클래스를 직접 mocking 해서 처리해도 괜찮을까?
- mocking이 필요하다면, 클래스를 인터페스화해서 mocking 클래스를 직접 구현해라.
6. 시간 처리하기
- 테스트환경에서 시간으로 인해 달라지는 결과를 얻는경우?
- 시간을 값으로 넘겨 처리하는 방식으로 리팩토링하는것이 좋다.