Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

junit assertEquals ignore case

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.

like image 536
Erki M. Avatar asked Jul 15 '13 10:07

Erki M.


People also ask

Is assertEquals case sensitive?

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).

How does junit assertEquals work?

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.

What is the difference between assertEquals and assertSame?

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.

What is the method assertEquals () used for?

#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.


1 Answers

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.

like image 126
John B Avatar answered Sep 29 '22 17:09

John B