Я пытался понять, тестировать следующий сценарий, где первое создание карты должно быть смоделировано, а создание второго экземпляра не должно быть смоделировано, и я написал следующим образом, который работает один сценарий и не работает в более позднем сценарии,
public class A {
public void test(){
Map<String,String> map = new HashMap<String, String>();
Map<String,String> map1 = new HashMap<String, String>();
System.out.println(map);
System.out.println(map1);
}
}
Первый способ написания Test, который работает, как и ожидалось
@RunWith(PowerMockRunner.class)
@PrepareForTest(A.class)
public class ATest {
@Test
public void test() throws Exception{
HashMap<String,String> map = PowerMockito.mock(HashMap.class);
HashMap<String,String> hashMap = new HashMap<String, String>();
PowerMockito.whenNew(HashMap.class).withNoArguments().thenReturn(map,hashMap);
A a = new A();
a.test();
}
}
Второй способ, где я непосредственно передал новый HashMap (), что вызывает исключение,
@RunWith(PowerMockRunner.class)
@PrepareForTest(A.class)
public class ATest {
@Test
public void test() throws Exception{
HashMap<String,String> map = PowerMockito.mock(HashMap.class);
PowerMockito.whenNew(HashMap.class).withNoArguments().thenReturn(map,new HashMap<String,String>());
A a = new A();
a.test();
}
}
может любойпожалуйста, дайте мне знать, почему он не работает, когда я передаю HashMap напрямую .....?