본문 바로가기

카테고리 없음

[Java] AssertJ assertions

java;S5838

 

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();