프로퍼티 테스트란?일반적으로 우리가 작성하는 테스트는 '예제 기반 테스트'입니다. "입력값으로 1과 2를 넣으면 결과값으로 3이 나와야 한다"처럼 특정 예시에 대한 결과만 확인하는 방식입니다. 하지만 이런 방식은 개발자가 미처 생각하지 못한 수많은 잠재적 입력값이나 엣지 케이스를 놓치기 쉽습니다. 프로퍼티 테스트는 이러한 문제를 해결하기 위해 등장했습니다. 개별 예제를 일일이 확인하는 대신, 어떤 입력값이든 항상 참이어야 하는 '속성(Property)' 또는 '규칙'을 정의합니다. 그러면 테스트 프레임워크가 수백, 수천 개의 무작위 데이터를 자동으로 생성하여 그 규칙을 깨뜨리는 예외 케이스를 찾으려고 시도합니다. 이를 통해 우리는 예상치 못한 버그를 발견하고 코드의 안정성을 크게 높일 수 있습니다. 기본..
kotest
kotest에서는 테스트가 실패하면 ErrorCollector의 pushError를 통해 실패한 테스트에 대한 에러 정보를 수집하고 있습니다. 수집한 에러를 기반으로 kotest는 AssertionError 객체를 생성고 그 과정에서 에러 메시지를 개발자가 디버깅하기 쉽도록 가공하여 제공하고 있습니다. 하지만 #4785 이슈에서는 assertSoftly를 통해 테스트를 진행하는 경우 테스트 실패 시 표시되는 테스트의 위치가 잘못 나타는 문제가 제보되었고 이를 해결하고 기여하였던 과정을 기록해보려 합니다. 기존 코드 파악// ---- ErrorCollectorinternal fun List.toAssertionError(depth: Int, subject: Printed?): AssertionError? ..