/** * gets the current set of modified target static fields * * @return */ public static ModifiedTargetStaticFields getInstance() { if (instance == null) { instance = new ModifiedTargetStaticFields(); } return instance; }
@Override protected void after() { for (int i=0; i< classNames.length;i++) { String classNameToReset = classNames[i]; try { org.evosuite.runtime.classhandling.ClassResetter.getInstance().reset(classNameToReset); } catch (Throwable t) { } } } }
public Method getResetMethod(String classNameWithDots) { cacheResetMethod(classNameWithDots); return resetMethodCache.get(loader).get(classNameWithDots); }
@Test public void testReset() throws Exception { JDKClassResetter.init(); int keyValue = 1234567; //this should be fine FooKey first = new FooKey(keyValue); try{ FooKey copy = new FooKey(keyValue); fail(); } catch(Exception e){ //expected, as cannot make a copy } JDKClassResetter.reset(); //after reset, copy should be fine FooKey copy = new FooKey(keyValue); } }
public StaticStateResetter(String... classesToReset) { classNames = Arrays.copyOf(classesToReset, classesToReset.length); org.evosuite.Properties.RESET_STATIC_FIELDS = true; /* * FIXME: tmp hack done during refactoring */ org.evosuite.runtime.classhandling.ClassResetter.getInstance().setClassLoader( TestGenerationContext.getInstance().getClassLoaderForSUT()); }
/** * This method returns is a given field is final or not. * Since we might have removed the <code>final</code> modifier * during our instrumentation, we also check the list of those * static fields we have modified during the instrumentation. * * @param field field to check * @return */ public static boolean isFinalField(Field field) { if (Properties.RESET_STATIC_FINAL_FIELDS) { if (Modifier.isFinal(field.getModifiers())) { return true; } else { String fieldName = field.getName(); final boolean isModifiedStaticField = ModifiedTargetStaticFields.getInstance().containsField(fieldName); return isModifiedStaticField; } } else { final boolean isFinalField = Modifier.isFinal(field.getModifiers()); return isFinalField; } }
@BeforeClass public static void initEvoSuiteFramework() { org.evosuite.runtime.RuntimeSettings.className = "com.examples.with.different.packagename.Euclidean"; org.evosuite.runtime.GuiSupport.initialize(); org.evosuite.runtime.RuntimeSettings.maxNumberOfThreads = 100; org.evosuite.runtime.RuntimeSettings.maxNumberOfIterationsPerLoop = 10000; org.evosuite.runtime.RuntimeSettings.mockSystemIn = true; org.evosuite.runtime.RuntimeSettings.sandboxMode = org.evosuite.runtime.sandbox.Sandbox.SandboxMode.RECOMMENDED; org.evosuite.runtime.sandbox.Sandbox.initializeSecurityManagerForSUT(); org.evosuite.runtime.classhandling.JDKClassResetter.init(); initializeClasses(); org.evosuite.runtime.Runtime.getInstance().resetRuntime(); }
@After public void doneWithTestCase(){ threadStopper.killAndJoinClientThreads(); org.evosuite.runtime.jvm.ShutdownHookHandler.getInstance().safeExecuteAddedHooks(); org.evosuite.runtime.classhandling.JDKClassResetter.reset(); org.evosuite.runtime.sandbox.Sandbox.doneWithExecutingSUTCode(); org.evosuite.runtime.agent.InstrumentingAgent.deactivate(); org.evosuite.runtime.GuiSupport.restoreHeadlessMode(); }
private static void initializeClasses() { org.evosuite.runtime.classhandling.ClassStateSupport.initializeClasses(Euclidean_ESTest_scaffolding.class.getClassLoader() , "com.examples.with.different.packagename.Euclidean" ); } }
@Test public void testWithReset(){ runTheTest(true); }
@Test public void testWithNoReset(){ runTheTest(false); }
@Test public void testWithNoReset(){ runTheTest(false); }
private void runTheTest(boolean reset){ Properties.RESET_STATIC_FIELDS = reset; EvoSuite evosuite = new EvoSuite(); String targetClass = ClassWithStaticInitializerTryCatch.class.getCanonicalName(); Properties.TARGET_CLASS = targetClass; String[] command = new String[] { "-generateSuite", "-class", targetClass }; Object result = evosuite.parseCommandLine(command); GeneticAlgorithm<?> ga = getGAFromResult(result); TestSuiteChromosome best = (TestSuiteChromosome) ga.getBestIndividual(); Assert.assertNotNull(best); } }
private void runTheTest(boolean reset){ Properties.RESET_STATIC_FIELDS = reset; EvoSuite evosuite = new EvoSuite(); String targetClass = StaticInitCatchImplicitNullPointer.class.getCanonicalName(); Properties.TARGET_CLASS = targetClass; String[] command = new String[] { "-generateSuite", "-class", targetClass }; Object result = evosuite.parseCommandLine(command); GeneticAlgorithm<?> ga = getGAFromResult(result); TestSuiteChromosome best = (TestSuiteChromosome) ga.getBestIndividual(); Assert.assertNotNull(best); } }
private void runTheTest(boolean reset){ Properties.RESET_STATIC_FIELDS = reset; EvoSuite evosuite = new EvoSuite(); String targetClass = StaticInitCatchNullPointer.class.getCanonicalName(); Properties.TARGET_CLASS = targetClass; String[] command = new String[] { "-generateSuite", "-class", targetClass }; Object result = evosuite.parseCommandLine(command); GeneticAlgorithm<?> ga = getGAFromResult(result); TestSuiteChromosome best = (TestSuiteChromosome) ga.getBestIndividual(); Assert.assertNotNull(best); } }
/** * Reset the static state of all the given classes. * * <p> * This method will be usually called after a test is executed, ie in a @After * </p> * * @param classNames */ public static void resetClasses(String... classNames) { for (int i=0; i< classNames.length;i++) { String classNameToReset = classNames[i]; ClassResetter.getInstance().reset(classNameToReset); } }
@Test public void testInitializeClasses(){ EvoClassLoader loader = new EvoClassLoader(); String className = "com.examples.with.different.packagename.classhandling.TimeA"; //no mocking RuntimeSettings.deactivateAllMocking(); boolean problem = ClassStateSupport.initializeClasses(loader, className); Assert.assertFalse(problem); //with mocking RuntimeSettings.mockJVMNonDeterminism = true; className = "com.examples.with.different.packagename.classhandling.TimeB"; problem = ClassStateSupport.initializeClasses(loader,className); Assert.assertFalse(problem); } }
@Test public void testWithNoReset(){ runTheTest(false); }
@Test public void testWithReset(){ runTheTest(true); }
@Test public void testWithReset(){ runTheTest(true); }