Best EvoMaster code snippet using org.evomaster.client.java.instrumentation.staticstate.ExecutionTracer.markLastExecutedStatement
Source:ExecutionTracer.java  
...95    }96    public static void addStringSpecialization(String taintInputName, StringSpecializationInfo info){97        additionalInfoList.get(actionIndex).addSpecialization(taintInputName, info);98    }99    public static void markLastExecutedStatement(String lastLine, String lastMethod){100        additionalInfoList.get(actionIndex).pushLastExecutedStatement(lastLine, lastMethod);101    }102    public static final String COMPLETED_LAST_EXECUTED_STATEMENT_NAME = "completedLastExecutedStatement";103    public static final String COMPLETED_LAST_EXECUTED_STATEMENT_DESCRIPTOR = "()V";104    public static void completedLastExecutedStatement(){105        additionalInfoList.get(actionIndex).popLastExecutedStatement();106    }107    public static Map<String, TargetInfo> getInternalReferenceToObjectiveCoverage() {108        return objectiveCoverage;109    }110    /**111     * @return the number of objectives that have been encountered112     * during the test execution113     */114    public static int getNumberOfObjectives() {115        return objectiveCoverage.size();116    }117    public static int getNumberOfObjectives(String prefix) {118        return (int) objectiveCoverage119                .entrySet().stream()120                .filter(e -> prefix == null || e.getKey().startsWith(prefix))121                .count();122    }123    /**124     * Note: only the objectives encountered so far can have125     * been recorded. So, this is a relative value, not based126     * on the code of the whole SUT (just the parts executed so far).127     * Therefore, it is quite useless for binary values (ie 0 or 1),128     * like current implementation of basic line coverage.129     *130     * @param prefix used for string matching of which objectives types131     *               to consider, eg only lines or only branches.132     *               Use "" or {@code null} to pick up everything133     * @return134     */135    public static int getNumberOfNonCoveredObjectives(String prefix) {136        return getNonCoveredObjectives(prefix).size();137    }138    public static Set<String> getNonCoveredObjectives(String prefix) {139        return objectiveCoverage140                .entrySet().stream()141                .filter(e -> prefix == null || e.getKey().startsWith(prefix))142                .filter(e -> e.getValue().value < 1)143                .map(e -> e.getKey())144                .collect(Collectors.toSet());145    }146    public static Double getValue(String id) {147        return objectiveCoverage.get(id).value;148    }149    private static void updateObjective(String id, double value) {150        if (value < 0d || value > 1d) {151            throw new IllegalArgumentException("Invalid value " + value + " out of range [0,1]");152        }153        /*154            In the same execution, a target could be reached several times,155            so we should keep track of the best value found so far156         */157        if (objectiveCoverage.containsKey(id)) {158            double previous = objectiveCoverage.get(id).value;159            if(value > previous){160                objectiveCoverage.put(id, new TargetInfo(null, id, value, actionIndex));161            }162        } else {163            objectiveCoverage.put(id, new TargetInfo(null, id, value, actionIndex));164        }165        ObjectiveRecorder.update(id, value);166    }167    public static void executedNumericComparison(String idTemplate, double lt, double eq, double gt){168        updateObjective(ObjectiveNaming.numericComparisonObjectiveName(idTemplate, -1), lt);169        updateObjective(ObjectiveNaming.numericComparisonObjectiveName(idTemplate, 0), eq);170        updateObjective(ObjectiveNaming.numericComparisonObjectiveName(idTemplate, +1), gt);171    }172    public static void executedReplacedMethod(String idTemplate, ReplacementType type, Truthness t){173        String idTrue = ObjectiveNaming.methodReplacementObjectiveName(idTemplate, true, type);174        String idFalse = ObjectiveNaming.methodReplacementObjectiveName(idTemplate, false, type);175        updateObjective(idTrue, t.getOfTrue());176        updateObjective(idFalse, t.getOfFalse());177    }178    public static final String EXECUTED_LINE_METHOD_NAME = "executedLine";179    public static final String EXECUTED_LINE_DESCRIPTOR = "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V";180    /**181     * Report on the fact that a given line has been executed.182     */183    public static void executedLine(String className, String methodName, String descriptor, int line) {184        //for targets to cover185        String lineId = ObjectiveNaming.lineObjectiveName(className, line);186        String classId = ObjectiveNaming.classObjectiveName(className);187        updateObjective(lineId, 1d);188        updateObjective(classId, 1d);189        //to calculate last executed line190        String lastLine = className + "_" + line + "_" + methodName;191        String lastMethod = className + "_" + methodName + "_" + descriptor;192        markLastExecutedStatement(lastLine, lastMethod);193    }194    public static final String EXECUTING_METHOD_METHOD_NAME = "executingMethod";195    public static final String EXECUTING_METHOD_DESCRIPTOR = "(Ljava/lang/String;IIZ)V";196    /**197     *  Report on whether method calls have been successfully completed.198     *  Failures can happen due to thrown exceptions.199     *200     * @param className201     * @param line202     * @param index    as there can be many method calls on same line, need to differentiate them203     * @param completed whether the method call was successfully completed.204     */205    public static void executingMethod(String className, int line, int index, boolean completed){206        String id = ObjectiveNaming.successCallObjectiveName(className, line, index);...markLastExecutedStatement
Using AI Code Generation
1import org.evomaster.client.java.instrumentation.staticstate.ExecutionTracer;2public class Example {3    public static void main(String[] args) {4        int a = 10;5        int b = 20;6        int c = 30;7        if (a > b) {8            if (a > c) {9                System.out.println("a is greater than b and c");10            } else {11                System.out.println("a is greater than b but not c");12            }13        } else {14            if (b > c) {15                System.out.println("b is greater than a and c");16            } else {17                System.out.println("b is greater than a but not c");18            }19        }20        ExecutionTracer.markLastExecutedStatementAsBranch();21    }22}23Created-By: 11.0.2 (Oracle Corporation)markLastExecutedStatement
Using AI Code Generation
1public void markLastExecutedStatement(String className, String methodName, int lineNumber){2    try {3        Class<?> clazz = Class.forName(className);4        Method method = clazz.getDeclaredMethod(methodName);5        method.setAccessible(true);6        method.invoke(null, lineNumber);7    } catch (Exception e) {8        e.printStackTrace();9    }10}11public void markLastExecutedStatement(String className, String methodName, int lineNumber){12    try {13        Class<?> clazz = Class.forName(className);14        Method method = clazz.getDeclaredMethod(methodName, int.class);15        method.setAccessible(true);16        method.invoke(null, lineNumber);17    } catch (Exception e) {18        e.printStackTrace();19    }20}21public void markLastExecutedStatement(String className, String methodName, int lineNumber){22    try {23        Class<?> clazz = Class.forName(className);24        Method method = clazz.getDeclaredMethod(methodName, int.class);25        method.setAccessible(true);26        method.invoke(null, lineNumber);27    } catch (Exception e) {28        e.printStackTrace();29    }30}31public void markLastExecutedStatement(String className, String methodName, int lineNumber){32    try {33        Class<?> clazz = Class.forName(className);34        Method method = clazz.getDeclaredMethod(methodName, int.class);35        method.setAccessible(true);36        method.invoke(null, lineNumber);37    } catch (Exception e) {38        e.printStackTrace();39    }40}Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
