JUnit How to test a Map
By:Roy.LiuLast updated:2019-08-17
Forget about JUnit assertEquals(), to test a Map, uses the more expressive IsMapContaining class from hamcrest-library.jar
pom.xml
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> <exclusions> <exclusion> <groupId>org.hamcrest</groupId> <artifactId>hamcrest-core</artifactId> </exclusion> </exclusions> </dependency> <!-- This will get hamcrest-core automatically --> <dependency> <groupId>org.hamcrest</groupId> <artifactId>hamcrest-library</artifactId> <version>1.3</version> <scope>test</scope> </dependency> </dependencies>
1. IsMapContaining Examples
All the below assertThat checks will be passed.
MapTest.java
package com.mkyong;
import org.hamcrest.collection.IsMapContaining;
import org.junit.Test;
import java.util.HashMap;
import java.util.Map;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.not;
import static org.hamcrest.MatcherAssert.assertThat;
public class MapTest {
@Test
public void testAssertMap() {
Map<String, String> map = new HashMap<>();
map.put("j", "java");
map.put("c", "c++");
map.put("p", "python");
map.put("n", "node");
Map<String, String> expected = new HashMap<>();
expected.put("n", "node");
expected.put("c", "c++");
expected.put("j", "java");
expected.put("p", "python");
//All passed / true
//1. Test equal, ignore order
assertThat(map, is(expected));
//2. Test size
assertThat(map.size(), is(4));
//3. Test map entry, best!
assertThat(map, IsMapContaining.hasEntry("n", "node"));
assertThat(map, not(IsMapContaining.hasEntry("r", "ruby")));
//4. Test map key
assertThat(map, IsMapContaining.hasKey("j"));
//5. Test map value
assertThat(map, IsMapContaining.hasValue("node"));
Note
Try IsMapContaining, before you create your own methods to test a Map.
Try IsMapContaining, before you create your own methods to test a Map.
References
From:一号门

COMMENTS