im just moving from c# -> java. I need to write some tests using junit. In my test i need to compare two strings to see if they match. So we also have the Assert.assertEquals, but this is case sensitive. How can i make it case insensitive? What i need is:
"blabla".equals("BlabLA")
to return true.
So in C#, we used to have :
public static void AreEqual ( string expected, string actual, bool ignoreCase, string message )
I was quickly going thru Junit docs, but i can't seem to find anything like this.
Well honestly I think assertEqualsCase should be there - but I also think that the optional parameter for assertEquals should be there too just because, to me, assertEquals already should consider case and, based on my other xunit experiences, assertEquals already means totally equal (including case).
assertEquals. Asserts that two objects are equal. If they are not, an AssertionError without a message is thrown. If expected and actual are null , they are considered equal.
assertEquals() Asserts that two objects are equal. assertSame() Asserts that two objects refer to the same object. the assertEquals should pass and assertSame should fail, as the value of both classes are equal but they have different reference location.
#8) assertArrayEquals assert equals verifies that two object arrays are equal. If both the arrays hold null values, then they are being considered as equal. This method throws an AssertionError with the message provided if both the object arrays are not considered equal.
I find that Hamcrest provides must better assertions than the default JUnit
asserts. Hamcrest gives MANY MANY more options and provides better messages on failure. Some basic Hamcrest
matchers are built into JUnit
and JUnit
has the assertThat built in so this is not something totally new. See the hamcrest.core
package in the JUnit
API here. Try IsEqualIgnoringCase which would look like this.
assertThat(myString, IsEqualIgnoringCase.equalToIgnoringCase(expected));
With static imports this would be
assertThat(myString, equalToIgnoringCase(expected));
if you want to get really fancy you would do:
assertThat(myString, is(equalToIgnoringCase(expected)));
One of the advantages of this is that a failure would state that expected someString but was someOtherString
. As opposed to expected true got false
when using assertTrue
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With