어제 오늘 내일

[JUnit] assertNotEquals() – 같지 않아야 하는 값 비교 본문

IT/JUnit

[JUnit] assertNotEquals() – 같지 않아야 하는 값 비교

hi.anna 2026. 1. 5. 00:54

 

1. assertNotEquals() 메소드

assertNotEquals() 메소드는 JUnit에서 두 값이 서로 같지 않아야 함을 검증할 때 사용하는 단정(Assertion) 메소드입니다.
예상값(expected)과 실제값(actual)이 다를 경우 테스트가 성공하며, 같을 경우 실패합니다.

JUnit5의 대표적인 메소드 정의는 다음과 같습니다.

assertNotEquals(expected, actual);
assertNotEquals(expected, actual, message);
  • expected: 비교 기준이 되는 값
  • actual: 테스트 결과 값
  • message: 비교 실패 시 출력할 설명 메시지(선택)

 

2. 기본적인 assertNotEquals() 사용 예제

import static org.junit.jupiter.api.Assertions.assertNotEquals;
import org.junit.jupiter.api.Test;

public class NumberTest {

    @Test
    void testNotEquals() {
        int result = 10;
        assertNotEquals(5, result);
    }
}

코드 설명

  • 실제 값 result는 10입니다.
  • assertNotEquals(5, result)는 두 값이 다르므로 테스트가 성공합니다.

 

3. 메시지를 포함한 assertNotEquals() 사용 예제

@Test
void testWithMessage() {
    int value = 3 * 3;
    assertNotEquals(9, value, "값이 같으면 안됩니다.");
}

코드 설명

  • 실제 계산 결과는 9이며, 예상값도 9이므로 테스트는 실패합니다.
  • 실패 시 "값이 같으면 안됩니다." 메시지가 출력됩니다.

 

4. 문자열 비교에서의 assertNotEquals()

@Test
void testStringNotEquals() {
    String text = "JUnit Test";
    assertNotEquals("Test", text);
}

코드 설명

  • "JUnit Test"와 "Test"는 다른 문자열이므로 테스트는 성공합니다.
  • 문자열 비교에서도 정확하게 다름을 판단합니다.

 

5. 객체 비교에서의 assertNotEquals()

객체 비교 시 assertNotEquals()는 객체의 equals() 메소드를 사용하여 동일 여부를 판단합니다.
equals()가 재정의되어 있다면 그 기준으로 비교합니다.

class User {
    String name;
    User(String name) { this.name = name; }

    @Override
    public boolean equals(Object obj) {
        if (this == obj) return true;
        if (!(obj instanceof User)) return false;
        User other = (User) obj;
        return this.name.equals(other.name);
    }
}

@Test
void testUserNotEquals() {
    User u1 = new User("Alice");
    User u2 = new User("Bob");
    assertNotEquals(u1, u2);
}

코드 설명

  • equals()가 이름 기준으로 재정의되어 있으므로 "Alice"와 "Bob"은 다른 사용자로 판단됩니다.
  • 두 객체가 다르므로 테스트는 성공합니다.

 

6. assertNotEquals() 사용 시 주의할 점

6.1 expected와 actual이 같으면 테스트는 반드시 실패합니다.

테스트 논리를 작성할 때 단순히 값을 반대로 비교하는 용도로만 사용하면 의도와 다른 결과가 나올 수 있습니다.

6.2 null 비교 시 assertNotNull()을 사용할 수 있습니다.

assertNotEquals(null, value)를 사용해도 되지만,
의도를 더 명확히 하기 위해 assertNotNull()을 사용하는 것이 좋습니다.

 

7. 정리

assertNotEquals() 메소드는 두 값이 서로 같지 않아야 하는 상황을 검증하는 데 사용됩니다.
숫자, 문자열, 객체 등 다양한 타입에 적용할 수 있으며, 객체 비교 시 equals() 재정의 여부가 중요한 기준이 됩니다.

 

 

반응형
Comments