I am trying to test a method of hashMap using Mockito but its not working as expected. My Class
import java.util.HashMap; import java.util.Map; public class Fun { private static Map<String,Long> map1= new HashMap<>(); public long foo(final String test){ if(!map1.containsKey(test)){ return 0L; } return map1.get(test); } }
My test class
import org.junit.Assert; import org.junit.Test; import java.util.HashMap; import java.util.Map; public class FunTest { private static Map<String,Long> map1 = new HashMap<>(); private Fun classUndertest = new Fun(); @Test public void testfoo(){ map1.put("test",2L); long value = classUndertest.foo("test"); Assert.assertEquals(2L, value); } }
Its giving 0L instead of 2L.
Advertisement
Answer
Only reflection can help with private static field:
@ExtendWith(MockitoExtension.class) public class FunTest { private Fun classUndertest = new Fun(); @Test public void testfoo() throws NoSuchFieldException { Map<String, Long> test = Map.of("test", 2L); FieldSetter.setField(classUndertest, Fun.class.getDeclaredField("map1"), test); long value = classUndertest.foo("test"); Assertions.assertEquals(2L, value); } }