junit assertEquals ignore case

33,974

Solution 1

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.

Solution 2

Use

"blabla".equalsIgnoreCase("BlabLA") use for check equality ignore case

Then you can use

 assertTrue("blabla".equalsIgnoreCase("BlabLA"))

Solution 3

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

Solution 4

What about:

assertEquals("blabla","BlabLA".toLowerCase());

or

assertEquals(expectedLowerCaseString,actualString.toLowerCase());

Then you can still see the difference if they are not equal.

Solution 5

You can use assertTrue(s1.equalsIgnoreCase(s2))

Share:
33,974

Related videos on Youtube

Erki M.
Author by

Erki M.

SOreadytohelp

Updated on August 11, 2020

Comments

  • Erki M.
    Erki M. over 3 years

    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.

  • Ruchira Gayan Ranaweera
    Ruchira Gayan Ranaweera almost 11 years
    It assertTrue(s1.equalsIgnoreCase(s2)); that's it
  • robjohncox
    robjohncox almost 11 years
    No worries - though check out @JohnB answer I think this will give better results (i.e. better output if the test fails) as well as being arguably more readable.
  • Erki M.
    Erki M. almost 11 years
    Sry, i am very new to java, any clue why i am getting this? Seems to be correct import.. 1) AddNewTrip(PikoFuncTests.Tests.Trip.AddNewTripTest) java.lang.NoSuchMethodError: org.hamcrest.Matcher.describeMismatch(Ljava/lang/Object;Lorg‌​/hamcrest/Descriptio‌​n;)V at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:18) at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:8) at PikoFuncTests.PageObjects.MainView.Trip.TripMainView.Validat‌​eResultsTable(TripMa‌​inView.java:147)
  • John B
    John B almost 11 years
    This usually happens when you have imported 2 different versions of Hamcrest. There is one that is included in JUnit so if you included hamcrest-all to get the functionality there might be a delta. Try using junit-dep instead of junit. The -dep version does not come with Hamcrest so your Hamcrest import will be the only one.
  • John B
    John B almost 11 years
    Here is a post that describes the issue: stackoverflow.com/questions/7869711/…