/** * 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))); }
/** * <p> * getControlDependencies * </p> * * @return a {@link java.util.Set} object. */ public Set<BranchCoverageGoal> getControlDependencies() { Set<BranchCoverageGoal> goals = new HashSet<BranchCoverageGoal>(); for (ControlDependency cd : original.getControlDependencies()) { BranchCoverageGoal goal = new BranchCoverageGoal(cd, className, methodName); goals.add(goal); } return goals; }
/** * 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 OnlyBranchCoverageTestFitness createOnlyBranchCoverageTestFitness( Branch b, boolean branchExpressionValue) { return new OnlyBranchCoverageTestFitness(new BranchCoverageGoal(b, branchExpressionValue, b.getClassName(), b.getMethodName())); }
/** * 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())); }
/** {@inheritDoc} */ @Override public List<TryCatchCoverageTestFitness> getCoverageGoals() { List<TryCatchCoverageTestFitness> goals = new ArrayList<>(); // logger.info("Getting branches"); for (String className : BranchPool.getInstance(TestGenerationContext.getInstance().getClassLoaderForSUT()).knownClasses()) { final MethodNameMatcher matcher = new MethodNameMatcher(); // Branches for (String methodName : BranchPool.getInstance(TestGenerationContext.getInstance().getClassLoaderForSUT()).knownMethods(className)) { if (!matcher.methodMatches(methodName)) { logger.info("Method " + methodName + " does not match criteria. "); continue; } for (Branch b : BranchPool.getInstance(TestGenerationContext.getInstance().getClassLoaderForSUT()).retrieveBranchesInMethod(className, methodName)) { if(b.isInstrumented()) { goals.add(new TryCatchCoverageTestFitness(new BranchCoverageGoal(b, true, b.getClassName(), b.getMethodName()))); if(!b.ignoreFalseBranch()) { goals.add(new TryCatchCoverageTestFitness(new BranchCoverageGoal(b, false, b.getClassName(), b.getMethodName()))); } } } } } return goals; }
BranchCoverageGoal goal = new BranchCoverageGoal(newB, true, newB.getClassName(), newB.getMethodName()); BranchCoverageTestFitness newFitness = new BranchCoverageTestFitness(goal); graph.addEdge((FitnessFunction<T>) newFitness, fitness); BranchCoverageGoal goal2 = new BranchCoverageGoal(newB, false, newB.getClassName(), newB.getMethodName()); 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)); }