스스로를 비교하는 Assertions은 개발자의 부주의로 인한 버그일 가능성이 높습니다.
이 규칙은 실제 식이 예상 식에 표현되는 경우 알려줍니다.
규칙을 어긴 코드
assertThat(actual).isEqualTo(actual); // 규칙을 어긴 코드
assertThat(actual).isEqualTo(expected); // 규칙을 준수한 코드
예외
유닛테스트에서 equals() 함수와 hashCode() 함수를 검사하는 경우, 자기 자신과 비교하는 것은 적절합니다.
이 규칙은 유닛테스트 이름이 equal, hash_?code, object_?method를 대소문자 구분 없이 포함한다면, isEqualTo, assertEquals, hasSameHashCodeAs 함수에 문제를 제시하지 않습니다.
예를 들어, 테스트 이름이 다음과 같은 경우입니다.
- test_equals
- testEqual
- test_hashCode
- test_hash_code
- test_object_methods
class MyClassTest {
@Test
void test_equals_and_hash_code() {
MyClass obj = new MyClass();
assertThat(obj).isEqualTo(obj); // 규칙을 준수한 코드
assertThat(obj).hasSameHashCodeAs(obj); // 규칙을 준수한 코드
}
}
If you like SONARKUBE, don’t forget to give me a star.