@SuppressWarnings("unchecked") private void addDependencies4TryCatch() { logger.debug("Added dependencies for Try-Catch"); for (FitnessFunction<T> ff : this.uncoveredGoals){ if (ff instanceof TryCatchCoverageTestFitness){ TryCatchCoverageTestFitness stmt = (TryCatchCoverageTestFitness) ff; BranchCoverageTestFitness branch = new BranchCoverageTestFitness(stmt.getBranchGoal()); this.dependencies.get(branch).add((FitnessFunction<T>) stmt); } } }
/** * Create a fitness function for branch coverage aimed at covering the root * branch of the given method in the given class. Covering a root branch * means entering the method. * * @param className * a {@link java.lang.String} object. * @param method * a {@link java.lang.String} object. * @return a {@link org.evosuite.coverage.branch.BranchCoverageTestFitness} * object. */ public static BranchCoverageTestFitness createRootBranchTestFitness( String className, String method) { return new BranchCoverageTestFitness(new BranchCoverageGoal(className, method.substring(method.lastIndexOf(".") + 1))); }
/** * This methods derive the dependencies between {@link org.evosuite.coverage.mutation.StrongMutationTestFitness} and branches. * Therefore, it is used to update 'this.dependencies' */ private void addDependencies4StrongMutation() { logger.debug("Added dependencies for Strong-Mutation"); for (FitnessFunction<T> ff : this.uncoveredGoals){ if (ff instanceof StrongMutationTestFitness){ StrongMutationTestFitness mutation = (StrongMutationTestFitness) ff; Set<BranchCoverageGoal> goals = mutation.getMutation().getControlDependencies(); if (goals.size() == 0){ this.currentGoals.add(ff); } else { for (BranchCoverageGoal goal : goals) { BranchCoverageTestFitness fitness = new BranchCoverageTestFitness(goal); this.dependencies.get(fitness).add(ff); } } } } }
/** * This methods derive the dependencies between {@link WeakMutationTestFitness} and branches. * Therefore, it is used to update 'this.dependencies' */ private void addDependencies4WeakMutation() { logger.debug("Added dependencies for Weak-Mutation"); for (FitnessFunction<T> ff : this.uncoveredGoals){ if (ff instanceof WeakMutationTestFitness){ WeakMutationTestFitness mutation = (WeakMutationTestFitness) ff; Set<BranchCoverageGoal> goals = mutation.getMutation().getControlDependencies(); if (goals.size() == 0){ this.currentGoals.add(ff); } else { for (BranchCoverageGoal goal : goals) { BranchCoverageTestFitness fitness = new BranchCoverageTestFitness(goal); this.dependencies.get(fitness).add(ff); } } } } }
/** * Create a fitness function for branch coverage aimed at executing the * Branch identified by b as defined by branchExpressionValue. * * @param b * a {@link org.evosuite.coverage.branch.Branch} object. * @param branchExpressionValue * a boolean. * @return a {@link org.evosuite.coverage.branch.BranchCoverageTestFitness} * object. */ public static BranchCoverageTestFitness createBranchCoverageTestFitness( Branch b, boolean branchExpressionValue) { return new BranchCoverageTestFitness(new BranchCoverageGoal(b, branchExpressionValue, b.getClassName(), b.getMethodName())); }
BranchCoverageTestFitness newFitness = new BranchCoverageTestFitness(goal); graph.addEdge((FitnessFunction<T>) newFitness, fitness); BranchCoverageTestFitness newfitness2 = new BranchCoverageTestFitness(goal2); graph.addEdge((FitnessFunction<T>) newfitness2, fitness);
@Test public void testTwoTestsDifferOnlyInBranches() { Branch b1 = mock(Branch.class); BytecodeInstruction bi = mock(BytecodeInstruction.class); when(b1.getInstruction()).thenReturn(bi); TestCase test1 = new DefaultTestCase(); MethodCoverageTestFitness methodGoal = new MethodCoverageTestFitness("FooClass", "toString"); test1.addCoveredGoal(methodGoal); BranchCoverageTestFitness branchGoal1 = new BranchCoverageTestFitness(new BranchCoverageGoal(b1, true, "FooClass", "toStringBarFooBlubb", 0)); test1.addCoveredGoal(branchGoal1); TestCase test2 = new DefaultTestCase(); test2.addCoveredGoal(methodGoal); test2.addStatement(new IntPrimitiveStatement(test2, 0)); // Need to add statements to change hashCode BranchCoverageTestFitness branchGoal2 = new BranchCoverageTestFitness(new BranchCoverageGoal(b1, false, "FooClass", "toString", 0)); test2.addCoveredGoal(branchGoal2); List<TestCase> tests = new ArrayList<>(); tests.add(test1); tests.add(test2); CoverageGoalTestNameGenerationStrategy naming = new CoverageGoalTestNameGenerationStrategy(tests); assertEquals("testToString0", naming.getName(test1)); assertEquals("testToString1", naming.getName(test2)); }
@Test public void testNull() { BranchCoverageGoal goal = Mockito.mock(BranchCoverageGoal.class); BranchCoverageTestFitness fitness = new BranchCoverageTestFitness(goal); TestChromosome tch1 = new TestChromosome(); tch1.setTestCase(new DefaultTestCase()); tch1.setFitness(fitness, 0); PreferenceSortingComparator comparator = new PreferenceSortingComparator(fitness); double value = comparator.compare(tch1, null); assertEquals(-1, value, 0.0001); value = comparator.compare(null, tch1); assertEquals(+1, value, 0.0001); }
@Test public void compareEqual() { BranchCoverageGoal goal = Mockito.mock(BranchCoverageGoal.class); BranchCoverageTestFitness fitness = new BranchCoverageTestFitness(goal); TestChromosome tch1 = new TestChromosome(); tch1.setTestCase(new DefaultTestCase()); tch1.setFitness(fitness, 1); TestChromosome tch2 = new TestChromosome(); tch2.setTestCase(new DefaultTestCase()); tch2.setFitness(fitness, 1); PreferenceSortingComparator comparator = new PreferenceSortingComparator(fitness); double value = comparator.compare(tch1, tch2); assertEquals(0.0, value, 0.0001); }
@Test public void compareLarger() { BranchCoverageGoal goal = Mockito.mock(BranchCoverageGoal.class); BranchCoverageTestFitness fitness = new BranchCoverageTestFitness(goal); TestChromosome tch1 = new TestChromosome(); tch1.setTestCase(new DefaultTestCase()); tch1.setFitness(fitness, 2); TestChromosome tch2 = new TestChromosome(); tch2.setTestCase(new DefaultTestCase()); tch2.setFitness(fitness, 1); PreferenceSortingComparator comparator = new PreferenceSortingComparator(fitness); double value = comparator.compare(tch1, tch2); assertEquals(+1, value, 0.0001); }
@Test public void compareSmaller() { BranchCoverageGoal goal = Mockito.mock(BranchCoverageGoal.class); BranchCoverageTestFitness fitness = new BranchCoverageTestFitness(goal); TestChromosome tch1 = new TestChromosome(); tch1.setTestCase(new DefaultTestCase()); tch1.setFitness(fitness, 0); TestChromosome tch2 = new TestChromosome(); tch2.setTestCase(new DefaultTestCase()); tch2.setFitness(fitness, 1); PreferenceSortingComparator comparator = new PreferenceSortingComparator(fitness); double value = comparator.compare(tch1, tch2); assertEquals(-1, value, 0.0001); }