1

나는 단위 테스트로 다뤄지는 여러 클래스로 구현 된 알고리즘을 가지고 있습니다.단위 테스트와 통합 테스트 간의 중복 처리

리팩토링하고 싶습니다. 두 클래스의 동작이 변경됩니다. 하나의 클래스와 테스트를 변경하면 리팩토링이 완료 될 때까지 알고리즘이 올바르지 않지만 모든 유닛 테스트가 통과합니다.

이 예제는 단위 테스트에 의한 완전한 커버리지가 때때로 불충분하다는 것을 보여 주며, 입출력 측면에서 전체 알고리즘에 대한 "통합"테스트가 필요함을 보여줍니다. 이상적으로, 그러한 테스트는 내 알고리즘의 동작을 완전히 포함해야합니다.

내 질문 : 이러한 통합 테스트를 추가하는 것처럼 보이며 단위 테스트를 불필요하고 불필요하게 만듭니다. 중복 테스트 로직을 지원하고 싶지 않습니다. 단위 테스트를 제거하거나 그대로 두어야합니까? 예 : 버그 위치를 쉽게?

답변

1

이것은 너무 세밀하고 구현과 밀접하게 결합 된 테스트에서 문제의 일부입니다.

개인적으로 알고리즘의 동작에 초점을 맞춘 테스트를 작성하고이를 '하나의 단위'로 간주합니다. 사실 여러 클래스로 나뉘어져 있다는 사실은 공용 메서드의 기능을 여러 개의 작은 개인 메서드로 나누는 것과 동일한 방식으로 구현 세부 사항입니다. 나는 개별 메서드에 대한 테스트를 별도로 작성하지 않을 것이고 공용 메서드의 기능 테스트를 통해 테스트 할 것입니다.

그 중 일부 클래스가 일반적으로 유용하며 다른 곳에서 재사용되는 경우 해당 시점에 단위 테스트를 작성하는 것이 좋을 것입니다.

이것은 중복 될 수 있지만, 이제는 해당 테스트가 정의 할 수있는 공개 계약이 있고 (이를 사용하는 두 구성 요소에서 사용되는 공용 계약이므로)이 테스트가 정의 할 수 있습니다.

흥미롭게도 단위의 정의는 this article