Hamcrest 매처와 함께 JUnit 어설 션을 주로 사용하는 테스트 스위트가 있습니다. 우리 팀 중 한 명이 AssertJ로 실험을 시작했고 구문, 유연성 및 선언 성으로 사람들에게 깊은 인상을주었습니다. AssertJ에서 이에 상응하는 것을 찾을 수없는 JUnit이 제공하는 한 가지 기능이 있습니다. 사용자 지정 어설 션 실패 메시지 추가입니다.
우리는 종종 인간의 가독성을 위해 만들어지지 않았고 무작위로 보이는 Id 또는 UUID가있는 개체를 비교하고 있으며 포함 된 데이터로 무엇인지 알 수 없습니다. 슬프게도, 그것이 무엇인지 반드시 이해하지 않고 다른 서비스 간의 데이터를 매핑하는 것이 목적의 일부이기 때문에 이것은 우리 코드베이스에서 피할 수없는 상황입니다.
JUnit에서 assertThat
메소드는 String reason
매개 변수 앞에 매개 변수가 있는 버전을 제공합니다 Matcher<T>
. 이것은 비교가 인간에게 어떤 의미를 가져야하는지와 같이 문제에 대한 약간의 빛을 비추는 짧은 디버그 문자열을 추가하는 것을 간단하게 만듭니다.
반면에 AssertJ 는 인터페이스 Assert 또는 여러 구현 클래스 중 하나 를 반환 하는 수많은 제네릭 화 된static assertThat
메서드를 제공합니다 . 이 인터페이스는 실패에 포함될 사용자 정의 메시지를 설정하는 표준 방법을 제공하지 않습니다.
메시지를 추가하려는 모든 어설 션 유형에 대해 사용자 지정 어설 션 클래스 를 만들지 않고도 AssertJ API 또는 해당 확장 중 하나에서이 기능을 얻을 수있는 방법이 있습니까?
withFailMessage
문제; 나는 AssertJ를 좋아하지만 이것은 짜증 난다.