Bird
Raised Fist0
JUnittesting~5 mins

assertNotEquals in JUnit

Choose your learning style10 modes available
Introduction

We use assertNotEquals to check that two values are different. It helps us make sure our program does not produce unwanted equal results.

When you want to confirm a function does not return a specific wrong value.
When testing that two objects or variables are not the same after an operation.
When verifying that a change in input causes a change in output.
When ensuring that a method does not mistakenly produce duplicate results.
When checking that a value has been updated and is no longer equal to the old value.
Syntax
JUnit
assertNotEquals(expected, actual);
assertNotEquals(String message, expected, actual);

expected is the value you do NOT want actual to be equal to.

You can add a message to explain the test if it fails.

Examples
This checks that the sum of 2 and 2 is NOT 5.
JUnit
assertNotEquals(5, calculateSum(2, 2));
This checks that the greeting is not "hello" and shows a message if it fails.
JUnit
assertNotEquals("Values should differ", "hello", getGreeting());
Sample Program

This test checks that newValue is not equal to oldValue. Since 15 is not 10, the test will pass.

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

public class SampleTest {

    @Test
    public void testNotEquals() {
        int oldValue = 10;
        int newValue = 15;
        assertNotEquals(oldValue, newValue);
    }
}
OutputSuccess
Important Notes

If the two values are equal, the test will fail and show an error.

Use assertNotEquals to catch unexpected equal results early.

Summary

assertNotEquals checks that two values are different.

It helps catch errors where values should not match.

You can add a message to explain the test failure.

Practice

(1/5)
1. What does the JUnit method assertNotEquals check in a test?
easy
A. That two values are not the same
B. That two values are equal
C. That a value is true
D. That a value is null

Solution

  1. Step 1: Understand the purpose of assertNotEquals

    This method is used to verify that two values are different, meaning they should not be equal.
  2. Step 2: Compare with other assertions

    Unlike assertEquals which checks equality, assertNotEquals ensures values differ.
  3. Final Answer:

    That two values are not the same -> Option A
  4. Quick Check:

    assertNotEquals means values differ [OK]
Hint: Remember: 'NotEquals' means values must differ [OK]
Common Mistakes:
  • Confusing assertNotEquals with assertEquals
  • Thinking it checks for null values
  • Assuming it checks boolean true
2. Which of the following is the correct syntax to assert that two integers are not equal in JUnit with a custom error message?
easy
A. assertNotEquals(5, 10);
B. assertNotEquals(5 == 10);
C. assertNotEquals(5, 10, "Error");
D. assertNotEquals(5 != 10);

Solution

  1. Step 1: Review method signatures

    JUnit's assertNotEquals can take two values and an optional message as the last parameter.
  2. Step 2: Check each option

    assertNotEquals(5, 10); is valid but lacks a message; assertNotEquals(5, 10, "Error"); is correct syntax with message; Options B and C are invalid because they misuse boolean expressions.
  3. Final Answer:

    assertNotEquals(5, 10, "Error"); -> Option C
  4. Quick Check:

    Correct syntax includes values and optional message [OK]
Hint: Use assertNotEquals(value1, value2, message) for clarity [OK]
Common Mistakes:
  • Passing boolean expressions instead of values
  • Omitting required parameters
  • Using incorrect parameter order
3. What will happen when the following JUnit test runs?
int a = 3;
int b = 3;
assertNotEquals(a, b);
medium
A. Compilation error due to wrong syntax
B. Test passes because a and b are equal
C. Test passes because a and b are not equal
D. Test fails because a and b are equal

Solution

  1. Step 1: Analyze variable values

    Both a and b are assigned the value 3, so they are equal.
  2. Step 2: Understand assertNotEquals behavior

    assertNotEquals expects the two values to be different. Since they are equal, the assertion fails and the test fails.
  3. Final Answer:

    Test fails because a and b are equal -> Option D
  4. Quick Check:

    Equal values cause assertNotEquals to fail [OK]
Hint: assertNotEquals fails if values are the same [OK]
Common Mistakes:
  • Thinking test passes when values are equal
  • Confusing assertNotEquals with assertEquals
  • Assuming syntax error without checking code
4. Identify the error in this JUnit test snippet:
String expected = "hello";
String actual = "hello";
assertNotEquals(expected, actual);
medium
A. Test fails because expected and actual are equal
B. No error; test passes
C. Syntax error due to missing message
D. NullPointerException at runtime

Solution

  1. Step 1: Check values of variables

    Both expected and actual hold the string "hello", so they are equal.
  2. Step 2: Understand assertNotEquals effect

    The assertion expects different values. Since they are equal, the test fails but no syntax or runtime error occurs.
  3. Final Answer:

    Test fails because expected and actual are equal -> Option A
  4. Quick Check:

    Equal strings cause assertNotEquals to fail [OK]
Hint: assertNotEquals fails if strings match exactly [OK]
Common Mistakes:
  • Assuming test passes when strings are equal
  • Thinking message parameter is mandatory
  • Expecting runtime exceptions incorrectly
5. You want to test that a method generateId() never returns the value 0. Which JUnit assertion using assertNotEquals correctly tests this with 0 as the first argument and a custom message?
hard
A. assertNotEquals(0, 0, "ID should not be zero");
B. assertNotEquals(0, generateId(), "ID should not be zero");
C. assertNotEquals(generateId(), 0);
D. assertNotEquals("0", generateId());

Solution

  1. Step 1: Identify correct parameter order and message

    The expected forbidden value is 0, so it should be the first parameter. The actual value is from generateId(). Adding a message helps explain failure.
  2. Step 2: Evaluate options for correctness

    assertNotEquals(0, generateId(), "ID should not be zero"); correctly uses assertNotEquals(0, generateId(), "ID should not be zero"). assertNotEquals(generateId(), 0); misses the message and reverses parameters. assertNotEquals(0, 0, "ID should not be zero"); compares 0 to 0, which always fails. assertNotEquals("0", generateId()); compares string "0" to int, which is incorrect.
  3. Final Answer:

    assertNotEquals(0, generateId(), "ID should not be zero"); -> Option B
  4. Quick Check:

    Use expected value first, actual second, with message [OK]
Hint: Put expected value first, actual second, add message [OK]
Common Mistakes:
  • Swapping expected and actual parameters
  • Comparing different data types
  • Omitting helpful failure message
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard