I just written sample test case, where I would like to mock a void instance method. I am surprised, my test case is passing without calling the expectLastCall method. I would like to know, is calling of expectLastCall is not required while mocking instance void methods?
StringUtil.java
package com.sample.util;
import com.sample.model.MethodNotImplementedException;
public class StringUtil {
    public String toUpperAndRepeatStringTwice(String str) {
        String upperCase = str.toUpperCase();
        sendStringToLogger(upperCase);
        return upperCase + upperCase;
    }
    public void sendStringToLogger(String str){
        throw new MethodNotImplementedException();
    }
}
StringUtilTest.java
package com.sample.util;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.api.easymock.PowerMock;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
@RunWith(PowerMockRunner.class)
@PrepareForTest({ StringUtil.class })
public class StringUtilTest {
    @Test
    public void toUpperAndRepeatStringTwice() {
        StringUtil stringUtil = PowerMock.createPartialMock(StringUtil.class, "sendStringToLogger");
        String str = "HELLO PTR";
        stringUtil.sendStringToLogger(str);
        //PowerMock.expectLastCall().times(1);
        PowerMock.replayAll();
        String result = stringUtil.toUpperAndRepeatStringTwice("hello ptr");
        assertEquals(result, "HELLO PTRHELLO PTR");
    }
}
 
     
     
    