49 lines
1.4 KiB
Plaintext
49 lines
1.4 KiB
Plaintext
Assertions comparing an object to itself are more likely to be bugs due to developer's carelessness.
|
|
|
|
|
|
This rule raises an issue when the actual expression matches the expected expression.
|
|
|
|
== Noncompliant Code Example
|
|
|
|
----
|
|
assertThat(actual).isEqualTo(actual); // Noncompliant
|
|
----
|
|
|
|
== Compliant Solution
|
|
|
|
----
|
|
assertThat(actual).isEqualTo(expected);
|
|
----
|
|
|
|
== Exceptions
|
|
|
|
In a unit test validating the ``++equals(...)++`` and ``++hashCode()++`` methods, it's legitimate to compare an object to itself. This rule does not raise an issue for ``++isEqualTo++``, ``++assertEquals++`` or ``++hasSameHashCodeAs++`` when the unit test name contains (case insensitive): ``++equal++``, ``++hash_?code++``, ``++object_?method++``. For example, in tests with the following names: ``++test_equals++``, ``++testEqual++``, ``++test_hashCode++``, ``++test_hash_code++``, ``++test_object_methods++``.
|
|
|
|
----
|
|
class MyClassTest {
|
|
@Test
|
|
void test_equals_and_hash_code() {
|
|
MyClass obj = new MyClass();
|
|
assertThat(obj).isEqualTo(obj); // Compliant
|
|
assertThat(obj).hasSameHashCodeAs(obj); // Compliant
|
|
}
|
|
}
|
|
----
|
|
|
|
ifdef::env-github,rspecator-view[]
|
|
|
|
'''
|
|
== Implementation Specification
|
|
(visible only on this page)
|
|
|
|
include::message.adoc[]
|
|
|
|
include::highlighting.adoc[]
|
|
|
|
'''
|
|
== Comments And Links
|
|
(visible only on this page)
|
|
|
|
include::../comments-and-links.adoc[]
|
|
endif::env-github,rspecator-view[]
|