@Before public void setup() throws NoSuchFieldException, IllegalAccessException { initMocks(this); // injecting Population mock Field inj = GAPipeline.class.getDeclaredField("population"); inj.setAccessible(true); inj.set(gaPipeline, population); inj.setAccessible(false); gaPipeline.setChoosePairsStrategy(choosePairsStrategy); gaPipeline.setCrossoverStrategy(crossoverStrategy); gaPipeline.setMutationStrategy(mutationStrategy); gaPipeline.setSelectionStrategy(selectionStrategy); // We add 2 elements to makePairs() return, // so crossoverStrategy.crossover() should be invoked 2 times Set<Couple> crossoverStub = new HashSet<Couple>(); crossoverStub.add(Couple.ofCouple(1, 2)); crossoverStub.add(Couple.ofCouple(1, 3)); // Init strategies when(choosePairsStrategy.choosePairs(Matchers.<Population>any())).thenReturn(crossoverStub); when(crossoverStrategy.crossover(Matchers.<net.wintermuse.util.Pair>any())) .thenReturn(mock(Pair.class)); when(mutationStrategy.mutate(any())).thenReturn(mock(Object.class)); when(selectionStrategy.select(Matchers.<Population>any())).thenReturn(mock(Population.class)); }
@Test(expected = NullPointerException.class) public void setSelectionStrategy_Null_ThrowNPE() { gaPipeline.setSelectionStrategy(null); }