'Java Junit test case fails as it gets expected value type of String and actual value type of ArrayList
I am writing a Junit test case and the test case fails due to the mismatch in type. When I see the difference I see that the expected value is in String and the Actual value is ArrayList but the rest of everything is the same. Is there any way to compare only the content and not the type?
Following is the code that I have:
import org.junit.Test;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import static org.junit.Assert.assertEquals;
public class MyTest {
@Test
public void SimpleTest() throws Exception {
final List<String> actualList = new ArrayList<>();
actualList.add("{ \"name\": \"Hello\",\"job\": \"Zimmermann\"}");
actualList.add("{ \"name\": \"Bye\",\"job\": \"Malen\"}");
final String expectedJson = new String(getClass().getClassLoader().getResourceAsStream("./expected.json").readAllBytes(), StandardCharsets.UTF_8);
System.out.println(expectedJson);
System.out.println(actualList);
assertEquals(expectedJson, actualList);
}
}
My expected.json:
[{ "name": "Hello","job": "Zimmermann"}, { "name": "Bye","job": "Malen"}]
Output:
[{ "name": "Hello","job": "Zimmermann"}, { "name": "Bye","job": "Malen"}]
[{ "name": "Hello","job": "Zimmermann"}, { "name": "Bye","job": "Malen"}]
java.lang.AssertionError: expected: java.lang.String<[{ "name": "Hello","job": "Zimmermann"}, { "name": "Bye","job": "Malen"}]> but was: java.util.ArrayList<[{ "name": "Hello","job": "Zimmermann"}, { "name": "Bye","job": "Malen"}]>
Expected :java.lang.String<[{ "name": "Hello","job": "Zimmermann"}, { "name": "Bye","job": "Malen"}]>
Actual :java.util.ArrayList<[{ "name": "Hello","job": "Zimmermann"}, { "name": "Bye","job": "Malen"}]>
<Click to see difference>
When I see the difference the only difference is that: expected is String and actual is ArrayList. So I tried converting the expected to ArrayList but that's adding one more Array due to which content is wrapped in multiple Array.
Is there any way I can try to check only for content and ignore the data type in Junit or is there any other way to resolve this issue?
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
