Chained AssertJ assertions should be simplified to the corresponding dedicated assertion
- Code Smell
- Minor
- Available SinceJul 07, 2020
- SonarQube (Java)
AssertJ contains many assertions methods specific to common types. Both versions will test the same things, but the dedicated one will provide a better error message, simplifying the debugging process.
This rule reports an issue when an assertion can be simplified to a dedicated one.
The array below gives a non-exhaustive list of assertion reported by the rule. Code behaving similarly, or with a negation will also be reported.
OriginalDedicated Related to Object Related to String Related to File Related to Path Related to Array Related to Collection Related to Map Related to Optional
assertThat(getObject()).isEqualTo(null) | assertThat(getObject()).isNull() |
assertThat(getBoolean()).isEqualTo(true) | assertThat(getBoolean()).isTrue() |
assertThat(getBoolean()).isEqualTo(false) | assertThat(getBoolean()).isFalse() |
assertThat(x.equals(y)).isTrue() | assertThat(x).isEqualTo(y) |
assertThat(x == y).isTrue() | assertThat(x).isSameAs(y) |
assertThat(x == null).isTrue() | assertThat(x).isNull() |
assertThat(x.toString()).isEqualTo(y) | assertThat(x).hasToString(y) |
assertThat(x.hashCode()).isEqualTo(y.hashCode()) | assertThat(x).hasSameHashCodeAs(y)); |
assertThat(getObject() instanceof MyClass).isTrue() | assertThat(getObject()).isInstanceOf(MyClass.class) |
assertThat(x.compareTo(y)).isEqualTo(0) | assertThat(x).isEqualByComparingTo(y) |
assertThat(x >= y).isGreaterThanOrEqualTo(0) | assertThat(x).isGreaterThanOrEqualTo(y) |
assertThat(x > y).isPositive() | assertThat(x).isGreaterThan(y) |
assertThat(x <= y).isNotPositive() | assertThat(x).isLessThanOrEqualTo(y) |
assertThat(x < y).isTrue() | assertThat(x).isLessThan(y) |
assertThat(getString().isEmpty()).isTrue() | assertThat(getString()).isEmpty() |
assertThat(getString()).hasSize(0) | assertThat(getString()).isEmpty() |
assertThat(getString().equals(expected)).isTrue() | assertThat(getString()).isEqualTo(expected) |
assertThat(getString().equalsIgnoreCase(expected)).isTrue() | assertThat(getString()).isEqualToIgnoringCase(expected) |
assertThat(getString().contains(expected)).isTrue() | assertThat(getString()).contains(expected) |
assertThat(getString().startsWith(expected)).isTrue() | assertThat(getString()).startsWith(expected) |
assertThat(getString().endsWith(expected)).isTrue() | assertThat(getString()).endsWith(expected) |
assertThat(getString().matches(expected)).isTrue() | assertThat(getString()).matches(expected) |
assertThat(getString().trim()).isEmpty() | assertThat(getString()).isBlank() |
assertThat(getString().length()).isEqualTo(length) | assertThat(getString()).hasSize(length) |
assertThat(getString().length()).hasSize(expected.length()) | assertThat(getString()).hasSameSizeAs(expected) |
assertThat(getFile()).hasSize(0) | assertThat(getFile()).isEmpty() |
assertThat(getFile().length()).isZero() | assertThat(getFile()).isEmpty() |
assertThat(getFile().length()).isEqualTo(length) | assertThat(getFile()).hasSize(length) |
assertThat(getFile().canRead()).isTrue() | assertThat(getFile()).canRead() |
assertThat(getFile().canWrite()).isTrue() | assertThat(getFile()).canWrite() |
assertThat(getFile().exists()).isTrue() | assertThat(getFile()).exists() |
assertThat(getFile().getName()).isEqualTo(name) | assertThat(getFile()).hasName(name) |
assertThat(getFile().getParent()).isEqualTo(pathname) | assertThat(getFile()).hasParent(pathname) |
assertThat(getFile().getParentFile()).isNull() | assertThat(getFile()).hasNoParent() |
assertThat(getFile().isAbsolute()).isTrue() | assertThat(getFile()).isAbsolute() |
assertThat(getFile().isAbsolute()).isFalse() | assertThat(getFile()).isRelative() |
assertThat(getFile().isDirectory()).isTrue() | assertThat(getFile()).isDirectory() |
assertThat(getFile().isFile()).isTrue() | assertThat(getFile()).isFile() |
assertThat(getFile().list()).isEmpty() | assertThat(getFile()).isEmptyDirectory() |
assertThat(getPath().startsWith(path)).isTrue() | assertThat(getPath()).startsWithRaw(path) |
assertThat(getPath().endsWith(path)).isTrue() | assertThat(getPath()).endsWithRaw(path) |
assertThat(getPath().getParent()).isEqualTo(name) | assertThat(getPath()).hasParentRaw(name) |
assertThat(getPath().getParent()).isNull() | assertThat(getPath()).hasNoParentRaw() |
assertThat(getPath().isAbsolute()).isTrue() | assertThat(getPath()).isAbsolute() |
assertThat(getPath().isAbsolute()).isFalse() | assertThat(getPath()).isRelative() |
assertThat(getArray().length).isZero() | assertThat(getArray()).isEmpty() |
assertThat(getArray().length).isEqualTo(length) | assertThat(getArray()).hasSize(length) |
assertThat(getArray().length).isEqualTo(anotherArray.length) | assertThat(getArray()).hasSameSizeAs(getAnotherArray()) |
assertThat(getArray().length).isLessThanOrEqualTo(expression) | assertThat(getArray()).hasSizeLessThanOrEqualTo(expression) |
assertThat(getArray().length).isLessThan(expression) | assertThat(getArray()).hasSizeLessThan(expression) |
assertThat(getArray().length).isGreaterThan(expression) | assertThat(getArray()).hasSizeGreaterThan(expression) |
assertThat(getArray().length).isGreaterThanOrEqualTo(expression) | assertThat(getArray()).hasSizeGreaterThanOrEqualTo(expression) |
assertThat(getCollection().isEmpty()).isTrue() | assertThat(getCollection()).isEmpty() |
assertThat(getCollection().size()).isZero() | assertThat(getCollection()).isEmpty() |
assertThat(getCollection().contains(something)).isTrue() | assertThat(getCollection()).contains(something) |
assertThat(getCollection().containsAll(otherCollection)).isTrue() | assertThat(getCollection()).containsAll(otherCollection) |
assertThat(getMap().size()).isEqualTo(otherMap().size() | assertThat(getMap()).hasSameSizeAs(otherMap()) |
assertThat(getMap().containsKey(key)).isTrue() | assertThat(getMap()).containsKey(key) |
assertThat(getMap().containsValue(value)).isTrue() | assertThat(getMap()).containsValue(value) |
assertThat(getMap().get(key)).isEqualTo(value) | assertThat(getMap()).containsEntry(key, value) |
assertThat(getOptional().isPresent()).isTrue() | assertThat(getOptional()).isPresent() |
assertThat(getOptional().get()).isEqualTo(something) | assertThat(getOptional()).contains(something) |
assertThat(getOptional().get()).isSameAs(something) | assertThat(getOptional()).containsSame(something) |
Noncompliant Code Example
assertThat(getObject()).isEqualTo(null); // Noncompliant assertThat(getObject()).isNotEqualTo(null); // Noncompliant - not listed above but also supported assertThat(getString().trim()).isEmpty(); assertThat(getFile().canRead()).isTrue(); assertThat(getPath().getParent()).isNull();
Compliant Solution
assertThat(getObject()).isNull(); assertThat(getString()).isBlank(); assertThat(getFile()).canRead(); assertThat(getPath()).hasNoParentRaw();