Below two case pass test but why the times is different? Mokito case is 1 and 1 but PowerMokito case is 2 and 1 for the add api call.
package com.example;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import java.util.ArrayList;
import java.util.List;
@RunWith(PowerMockRunner.class)
@PrepareForTest({MainActivity.class})
public class MySpyTest {
@Before
public void setup() throws Exception {
}
List<String> spyList1 = Mockito.spy(new ArrayList<String>());
List<String> spyList2 = PowerMockito.spy(new ArrayList<String>());
@Test
public void verifySpyListMokito() {
spyList1.add("A");
spyList1.add("B");
verify(spyList1,times(1)).add("A");
verify(spyList1,times(1)).add("B");
assertEquals(2,spyList1.size());
}
@Test
public void verifySpyListPowerMokito() {
spyList2.add("A");
spyList2.add("B");
verify(spyList2,times(2)).add("A");
verify(spyList2,times(1)).add("B");
assertEquals(2,spyList2.size());
}
}