AssertJOptionalAssertion

SUGGESTION

Simplification

View source code on GitHub

Summary

Prefer .hasValue(value) and .containsSame(value) over more verbose alternatives

Suppression

Suppress false positives by adding the suppression annotation @SuppressWarnings("AssertJOptionalAssertion") to the enclosing element.

Disable this pattern completely by adding -Xep:AssertJOptionalAssertion:OFF as compiler argument. Learn more.

Samples

Replacement

Shows the difference in example code before and after the bug pattern is applied.

 import static org.assertj.core.api.Assertions.assertThat;
 
 import java.util.Optional;
 import java.util.stream.Stream;
 
 class A {
   void m() {
-    assertThat(Optional.of(1).get()).isEqualTo(2);
-    assertThat(Optional.of("foo").orElseThrow()).isSameAs("bar");
-    assertThat(Stream.empty().findAny().orElseThrow(IllegalArgumentException::new))
-        .isEqualTo(new Object());
+    assertThat(Optional.of(1)).hasValue(2);
+    assertThat(Optional.of("foo")).containsSame("bar");
+    assertThat(Stream.empty().findAny()).hasValue(new Object());
   }
 }
 

Identification

Shows code lines which will (not) be flagged by this bug pattern.
A //BUG: Diagnostic contains: comment is placed above any violating line.

import static org.assertj.core.api.Assertions.assertThat;

import java.util.Optional;
import java.util.stream.Stream;
import org.assertj.core.api.AbstractAssert;

class A {
  void m() {
    assertThat("foo").isEqualTo("bar");
    assertThat("baz").isSameAs("qux");

    assertThat(Optional.of(1)).isEqualTo(Optional.of(2));
    assertThat(Optional.of(3)).isSameAs(Optional.of(4));

    assertThat(1).isEqualTo(Optional.of(2).orElseThrow()).isEqualTo(3);
    assertThat(4).isSameAs(Optional.of(5).orElseThrow()).isSameAs(6);

    nullaryAssertThat().isEqualTo(1);
    nullaryAssertThat().isSameAs(2);

    AbstractAssert<?, ?> assertion = assertThat(Optional.of(1).orElseThrow());
    assertion.isEqualTo(2);
    assertion.isSameAs(3);

    assertThat(Optional.of(1).get()).isNotEqualTo(2);
    // BUG: Diagnostic contains:
    assertThat(Optional.of("foo").get()).isEqualTo("bar");
    // BUG: Diagnostic contains:
    assertThat(Stream.empty().findAny().get()).isSameAs(new Object());

    assertThat(Optional.<Number>of(1).orElseThrow()).isNotEqualTo(2);
    // BUG: Diagnostic contains:
    assertThat(Optional.<Object>of("foo").orElseThrow()).isEqualTo("bar");
    // BUG: Diagnostic contains:
    assertThat(Stream.<String>empty().findFirst().orElseThrow()).isSameAs(toString());

    assertThat(Optional.of(1).orElseThrow(IllegalArgumentException::new)).isNotEqualTo(2);
    // BUG: Diagnostic contains:
    assertThat(Optional.of("foo").orElseThrow(IllegalStateException::new)).isEqualTo("bar");
    // BUG: Diagnostic contains:
    assertThat(Stream.empty().findAny().orElseThrow(RuntimeException::new)).isSameAs(new Object());
  }

  static <T> AbstractAssert<?, ?> nullaryAssertThat() {
    return null;
  }
}

Copyright © 2017-2026 Picnic Technologies BV