protected void filterFailingAssertions(TestCase test) { // Make sure we are not keeping assertions influenced by static state // TODO: Need to handle statically initialized classes ExecutionResult result = runTest(test); Set<Assertion> invalidAssertions = new HashSet<Assertion>(); for(Assertion assertion : test.getAssertions()) { for(OutputTrace<?> outputTrace : result.getTraces()) { if(outputTrace.isDetectedBy(assertion)) { invalidAssertions.add(assertion); break; } } } logger.info("Removing {} nondeterministic assertions", invalidAssertions.size()); for(Assertion assertion : invalidAssertions) { test.removeAssertion(assertion); } }
/** {@inheritDoc} */ @Override public void addAssertions(TestCase test) { ExecutionResult result = runTest(test); for (OutputTrace<?> trace : result.getTraces()) { trace.getAllAssertions(test); trace.clear(); } logger.debug("Test after adding assertions: " + test.toCode()); } }
private void ensureExecutionResultHasTraces(TestChromosome individual, ExecutionResult result) { if(result.getTraces().isEmpty() && observerClasses.length > 0) { ExecutionResult newResult = runTest(individual.getTestCase()); for(Class<?> observerClass : observerClasses) { OutputTrace<?> trace = newResult.getTrace(observerClass); result.setTrace(trace, observerClass); } } }
@SuppressWarnings({ "rawtypes", "unchecked" }) private int getNumAssertions(ExecutionResult origResult, ExecutionResult mutant_result) { int num = 0; if (origResult.test.size() == 0) { logger.debug("Orig test is empty?"); return 0; } for (Class<?> observerClass : observerClasses) { OutputTrace trace = mutant_result.getTrace(observerClass); OutputTrace orig = origResult.getTrace(observerClass); if (orig == null) { String msg = "No trace for " + observerClass + ". Traces: "; for (OutputTrace t : origResult.getTraces()) msg += " " + t.toString(); logger.error(msg); } else { num += orig.numDiffer(trace); } } logger.debug("Found " + num + " assertions!"); return num; }
/** {@inheritDoc} */ @Override public void addAssertions(TestCase test) { ExecutionResult result = runTest(test); for (OutputTrace<?> trace : result.getTraces()) { trace.getAllAssertions(test); } for (int i = 0; i < test.size(); i++) { Statement s = test.getStatement(i); if (!isRelevant(s, test)) s.removeAssertions(); } }
for (OutputTrace<?> outputTrace : resultA.getTraces()) { if (outputTrace.isDetectedBy(assertion)) { logger.error("shouldn't be happening: assertion was failing on original version"); for (OutputTrace<?> outputTrace : resultB.getTraces()) { if (outputTrace.isDetectedBy(assertion) && !invalidAssertions.contains(assertion)) { count++;