import mockit.Expectations; import mockit.Injectable; import mockit.Tested; import mockit.integration.junit4.JMockit; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import java.util.Arrays; import java.util.List; @RunWith(JMockit.class) public class MinTimesTest { public static class UnitUnderTest { public String doSomething(List dependencies) { StringBuilder something = new StringBuilder(); for (DependencyAbc dependency : dependencies) { if (dependency.getValue() > 0) { something.append(dependency.getName()); } } return something.toString(); } } public static class DependencyAbc { public int getValue() { return 0; } public String getName() { return null; } } @Tested UnitUnderTest unit; @Injectable DependencyAbc dependency1; @Injectable DependencyAbc dependency2; final class DependencyExpectations extends Expectations { public DependencyExpectations(DependencyAbc dependency, int value, String name) { dependency.getValue(); result = value; minTimes = 0; dependency.getName(); result = name; minTimes = 0; } } @Test public void testMinTimes() { new DependencyExpectations(dependency1, -1, "dependency1"); new DependencyExpectations(dependency2, 1, "dependency2"); String result = unit.doSomething(Arrays.asList(dependency1, dependency2)); Assert.assertEquals("dependency2", result); } }