주요 코드 변경 (새로운 POJO, 주요 응용 프로그램 리팩토링 등)이 발생하면 단위 테스트는 재 작업이 아닌 주석 처리되는 경향이 있습니다.
나는 항상 리팩토링과 기능 변경을 분리하려고 노력합니다. 두 가지를 모두 수행해야 할 때 일반적으로 리팩토링을 먼저 수행합니다.
기능을 변경하지 않고 코드를 리팩토링 할 때 기존 단위 테스트는 리팩토링이 실수로 기능을 중단하지 않도록하는 데 도움이됩니다. 따라서 그러한 커밋의 경우 단위 테스트 비활성화 또는 제거가 주요 경고 신호로 간주됩니다. 코드를 검토 할 때 그렇게하지 말라고 개발자에게 지시해야합니다.
기능을 변경하지 않는 변경으로 인해 결함이있는 단위 테스트로 인해 단위 테스트가 계속 실패 할 수 있습니다. 변경하는 코드를 이해하면 이러한 단위 테스트 실패의 원인은 일반적으로 명백하고 수정하기 쉽습니다.
예를 들어, 함수가 세 개의 인수를 취하는 경우, 함수에 대한 첫 두 인수 사이의 상호 작용을 다루는 단위 테스트는 세 번째 인수에 유효한 값을 제공하지 않았을 수 있습니다. 단위 테스트의 이러한 결함은 테스트 된 코드의 리팩토링에 의해 노출 될 수 있지만 코드가 수행해야하는 작업과 단위 테스트가 수행하는 작업을 이해하면 쉽게 고칠 수 있습니다.
기존 기능을 변경하는 경우 일반적으로 일부 단위 테스트도 변경해야합니다. 이 경우 단위 테스트를 통해 코드가 의도 한대로 기능을 변경하고 의도하지 않은 부작용이 없는지 확인할 수 있습니다.
버그를 수정하거나 새로운 기능을 추가 할 때는 일반적으로 더 많은 단위 테스트를 추가해야합니다. 이를 위해 먼저 단위 테스트를 커밋하고 나중에 버그 수정 또는 새로운 기능을 커밋하는 것이 도움이 될 수 있습니다. 따라서 새로운 단위 테스트가 이전 코드와 함께 전달되지 않고 최신 코드와 함께 전달되는지 쉽게 확인할 수 있습니다. 그러나 이러한 접근 방식이 완전히 결점이없는 것은 아니기 때문에 새로운 단위 테스트와 코드 업데이트를 동시에 수행하는 데 유리한 주장도 있습니다.
사용 범위를 다루는 통합 테스트에 더 많은 시간을 할애하므로 소규모 테스트는 중요하지 않습니다.
이것에는 진실의 요소가 있습니다. 소프트웨어 스택의 상위 계층을 대상으로하는 테스트를 통해 소프트웨어 스택의 하위 계층을 다룰 수있는 경우 코드를 리팩토링 할 때 테스트가 더 도움이 될 수 있습니다.
단위 테스트와 통합 테스트의 정확한 차이점에 대해서는 동의하지 않을 것이라고 생각합니다. 그리고 한 개발자가 유용한 테스트 사례라고 동의 할 수있는 한 한 개발자가 단위 테스트를 호출하고 다른 개발자가 통합 테스트를 호출하는 테스트 사례가 있는지 걱정하지 않습니다.