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.
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
.
Use
"blabla".equalsIgnoreCase("BlabLA") use for check equality ignore case
Then you can use
assertTrue("blabla".equalsIgnoreCase("BlabLA"))
There is no direct support for this assert in JUnit
(assuming you are using JUnit of course), but you could use:
assertTrue("blabla".equalsIgnoreCase("BlabLA"))
It may be worth wrapping this in a separate helper method which provides a sensible failure message if they don't match (look at the docs for assertTrue
to see how this could be done).
What about:
assertEquals("blabla","BlabLA".toLowerCase());
or
assertEquals(expectedLowerCaseString,actualString.toLowerCase());
Then you can still see the difference if they are not equal.
Have you looked at the String
JavaDoc ?
"blabla".equalsIgnoreCase("BlabLA")
You can use assertTrue(s1.equalsIgnoreCase(s2))
Consider AssertJ (previously FEST) for your assertions, it's been my favorite assertion API for tests for years:
assertThat("blabla").isEqualToIgnoringCase("BlabLA");
Check the equalsIgnoreCase
from the string doc: