Assertions은 자기 자신과 비교해서는 안됩니다.

 

스스로를 비교하는 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. :star2:

원문으로 바로가기

Star This Project