package de.bechte.junit.runners.context.statements; import de.bechte.junit.runners.context.processing.ChildExecutor; import de.bechte.junit.runners.context.processing.ChildResolver; import org.junit.Before; import org.junit.Test; import org.junit.runner.notification.RunNotifier; import org.junit.runners.model.TestClass; import org.mockito.Mock; import java.util.Arrays; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import static org.mockito.MockitoAnnotations.initMocks; public class RunChildrenTest { @Mock private TestClass testClass; @Mock private ChildExecutor<Object> childExecutor; @Mock private ChildResolver<Object> childResolver; @Mock private RunNotifier notifier; @Before public void setUp() throws Exception { initMocks(this); } @Test public void verifyChildExecutorIsCalledForEachChild() throws Throwable { Object child1 = new Object(); Object child2 = new Object(); Object child3 = new Object(); when(childResolver.getChildren(testClass)).thenReturn(Arrays.asList(child1, child2, child3)); new RunChildren<Object>(testClass, childExecutor, childResolver, notifier).evaluate(); verify(childExecutor).run(testClass, child1, notifier); verify(childExecutor).run(testClass, child2, notifier); verify(childExecutor).run(testClass, child3, notifier); } }