AssertJOptionalAssertion
SUGGESTION
Simplification
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:OFFas 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;
}
}