I've got problems powermocking ProcessBuilder's constructor.
Code:
import java.util.concurrent.Executors;
public class Runner {
private ProcessBuilder processBuilder;
public ProcessBuilder getProcessBuilder() {
return processBuilder;
}
public void run() {
processBuilder = new ProcessBuilder("command", "parameter");
}
public void runInSubclass() {
final SubRunner subRunner = new SubRunner();
subRunner.run();
}
public void runInThread() {
Executors.newSingleThreadExecutor().execute(new SubRunner());
}
private class SubRunner extends Thread {
public void run() {
processBuilder = new ProcessBuilder("command", "parameter");
}
}
}
Test:
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.assertThat;
import static org.powermock.api.mockito.PowerMockito.mock;
import static org.powermock.api.mockito.PowerMockito.whenNew;
@RunWith(PowerMockRunner.class)
@PrepareForTest(Runner.class)
public class RunnerTest {
private Runner runner;
@Before
public void setUp() throws Exception {
runner = new Runner();
ProcessBuilder processBuilderMock = mock(ProcessBuilder.class);
whenNew(ProcessBuilder.class).withAnyArguments().thenReturn(processBuilderMock);
}
@Test
public void getProcessBuilder() throws Exception {
assertThat(runner.getProcessBuilder(), is(nullValue()));
}
@Test
public void run() throws Exception {
runner.run();
assertThat(runner.getProcessBuilder(), is(not(nullValue())));
}
@Test
public void runInSubclass() throws Exception {
runner.runInSubclass();
assertThat(runner.getProcessBuilder(), is(not(nullValue())));
}
@Test
public void runInThread() throws Exception {
runner.runInThread();
Thread.sleep(100);
assertThat(runner.getProcessBuilder(), is(not(nullValue())));
}
}
I'm using the lastest PowerMock (1.6.6).
Aucun commentaire:
Enregistrer un commentaire