Close

Junit 5 - Asserting Reference Equality

[Last Updated: Dec 1, 2025]

Assertions class has following methods to assert that two objects are the exact same instance in memory, not just that they have the same value.

public static void assertSame(Object expected, Object actual)
public static void assertSame(Object expected, Object actual, String message)
public static void assertSame(Object expected, Object actual, Supplier<String> messageSupplier)
public static void assertNotSame(Object unexpected, Object actual)
public static void assertNotSame(Object unexpected, Object actual, String message)
public static void assertNotSame(Object unexpected, Object actual, Supplier<String> messageSupplier)

Examples

Reference Equality Examples

package com.logicbig.example;

import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertNotSame;
import static org.junit.jupiter.api.Assertions.assertSame;

class ReferenceEqualityExamples {

  @Test
  void testSameObjectReference() {
      String str1 = "hello";
      String str2 = str1; // Same reference

      assertSame(str1, str2);
  }

  @Test
  void testNotSameObjectReference() {
      String str1 = new String("hello");
      String str2 = new String("hello"); // Different objects

      assertNotSame(str1, str2);
  }
}
mvn test -Dtest=ReferenceEqualityExamples

Output

D:\example-projects\junit-5\junit-5-assertions\junit-5-asserting-reference-equality>mvn test -Dtest=ReferenceEqualityExamples
[INFO] Scanning for projects...
[INFO]
[INFO] -----< com.logicbig.example:junit-5-asserting-reference-equality >------
[INFO] Building junit-5-asserting-reference-equality 1.0-SNAPSHOT
[INFO] from pom.xml
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- resources:3.3.1:resources (default-resources) @ junit-5-asserting-reference-equality ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory D:\example-projects\junit-5\junit-5-assertions\junit-5-asserting-reference-equality\src\main\resources
[INFO]
[INFO] --- compiler:3.14.1:compile (default-compile) @ junit-5-asserting-reference-equality ---
[INFO] Nothing to compile - all classes are up to date.
[INFO]
[INFO] --- resources:3.3.1:testResources (default-testResources) @ junit-5-asserting-reference-equality ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory D:\example-projects\junit-5\junit-5-assertions\junit-5-asserting-reference-equality\src\test\resources
[INFO]
[INFO] --- compiler:3.14.1:testCompile (default-testCompile) @ junit-5-asserting-reference-equality ---
[INFO] Recompiling the module because of added or removed source files.
[INFO] Compiling 1 source file with javac [debug target 25] to target\test-classes
[INFO]
[INFO] --- surefire:3.2.5:test (default-test) @ junit-5-asserting-reference-equality ---
[INFO] Using auto detected provider org.apache.maven.surefire.junitplatform.JUnitPlatformProvider
[INFO]
[INFO] -------------------------------------------------------
[INFO] T E S T S
[INFO] -------------------------------------------------------
[INFO] Running com.logicbig.example.ReferenceEqualityExamples
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.042 s -- in com.logicbig.example.ReferenceEqualityExamples
[INFO]
[INFO] Results:
[INFO]
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.018 s
[INFO] Finished at: 2025-12-01T11:13:26+08:00
[INFO] ------------------------------------------------------------------------

Example Project

Dependencies and Technologies Used:

  • junit-jupiter-engine 6.0.1 (Module "junit-jupiter-engine" of JUnit)
     Version Compatibility: 5.0.0 - 6.0.1Version List
    ×

    Version compatibilities of junit-jupiter-engine with this example:

    • 5.0.0
    • 5.0.1
    • 5.0.2
    • 5.0.3
    • 5.1.0
    • 5.1.1
    • 5.2.0
    • 5.3.0
    • 5.3.1
    • 5.3.2
    • 5.4.0
    • 5.4.1
    • 5.4.2
    • 5.5.0
    • 5.5.1
    • 5.5.2
    • 5.6.0
    • 5.6.1
    • 5.6.2
    • 5.6.3
    • 5.7.0
    • 5.7.1
    • 5.7.2
    • 5.8.0
    • 5.8.1
    • 5.8.2
    • 5.9.0
    • 5.9.1
    • 5.9.2
    • 5.9.3
    • 5.10.0
    • 5.10.1
    • 5.10.2
    • 5.10.3
    • 5.10.4
    • 5.10.5
    • 5.11.0
    • 5.11.1
    • 5.11.2
    • 5.11.3
    • 5.11.4
    • 5.12.0
    • 5.12.1
    • 5.12.2
    • 5.13.0
    • 5.13.1
    • 5.13.2
    • 5.13.3
    • 5.13.4
    • 5.14.0
    • 5.14.1
    • 6.0.0
    • 6.0.1

    Versions in green have been tested.

  • JDK 25
  • Maven 3.9.11

Junit 5 - Asserting Reference Equality Select All Download
  • junit-5-asserting-reference-equality
    • src
      • main
      • test
        • java
          • com
            • logicbig
              • example
                • ReferenceEqualityExamples.java

    See Also