hamcrest / JavaHamcrest

Java (and original) version of Hamcrest
http://hamcrest.org/
BSD 3-Clause "New" or "Revised" License
2.11k stars 379 forks source link

The matcher contains() is misleading #387

Open gmananton opened 2 years ago

gmananton commented 2 years ago

I found for myself that the matcher name "contains" is a bit misleading. Because it sounds similarly to contains() method of java.util.Collection it may expected to behave like this: assertThat(List.of(1,2), contains(1)) But the expression above will throw an AssertionError, because contains() is acting like containsExactly(). So how do you think about renaming it? Unfortunately the obvious problem here - is of course broken back compatibility ( If someone is using this matcher in his tests - they may have been broken and must be refactored

PakhomovAlexander commented 1 year ago

Hi, after spending quite some time on debugging, I realized that the observed behavior stemmed from this function. That is really confusing.

Pochatkin commented 1 year ago

Oh guys, I feel your pain