package org.pitest.groovy.verification;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import java.util.Collections;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.pitest.testapi.execute.Container;
import org.pitest.testapi.execute.Pitest;
import org.pitest.testapi.execute.containers.UnContainer;
import org.pitest.junit.JUnitCompatibleConfiguration;
import org.pitest.testapi.TestGroupConfig;
import org.pitest.testapi.TestListener;
import org.pitest.testapi.TestResult;
import com.example.spock.SpockTest;
import com.example.spock.ParametrizedSpockTest;
public class TestJUnitConfigurationForSpock {
private final JUnitCompatibleConfiguration testee = new JUnitCompatibleConfiguration(new TestGroupConfig(), Collections.<String>emptyList());
private Pitest pitest;
private Container container;
@Mock
private TestListener listener;
@Before
public void createTestee() {
MockitoAnnotations.initMocks(this);
this.container = new UnContainer();
this.pitest = new Pitest(Collections.singletonList(this.listener));
}
@Test
public void shouldFindTestInSpockTest() {
run(SpockTest.class);
verify(this.listener, times(1)).onTestSuccess(any(TestResult.class));
}
@Test
public void shouldFindTestsInParameterisedSpockTest() {
run(ParametrizedSpockTest.class);
verify(this.listener, times(3)).onTestSuccess(any(TestResult.class));
}
private void run(final Class<?> clazz) {
this.pitest.run(this.container, this.testee, clazz);
}
}