private void replaceAllStaticMethods(Class<?> mockClass, Class<?> target) throws IllegalArgumentException { for (Method m : target.getMethods()) { if (!Modifier.isStatic(m.getModifiers())) { continue; } String desc = Type.getMethodDescriptor(m); addReplacementCall(new MethodCallReplacement(target.getCanonicalName().replace('.', '/'), m.getName(), desc, Opcodes.INVOKESTATIC, mockClass.getCanonicalName().replace('.', '/'), m.getName(), desc, false, false)); } }
/** * Replace all the constructors of {@code target} with a static call (with * same input parameters) of static mock class {@code mockClass}. * * @param mockClass * @param target * @throws IllegalArgumentException */ private void replaceAllConstructorsWithStaticCalls(Class<?> mockClass, Class<?> target) throws IllegalArgumentException { for (Constructor<?> constructor : target.getConstructors()) { String desc = Type.getConstructorDescriptor(constructor); String replacementDesc = desc.substring(0, desc.length() - 1) + Type.getDescriptor(target); addReplacementCall(new MethodCallReplacement(target.getCanonicalName().replace('.', '/'), "<init>", desc, Opcodes.INVOKESPECIAL, mockClass.getCanonicalName().replace('.', '/'), target.getSimpleName(), replacementDesc, true, true)); } }
String jvmMock = MockThrowable.class.getName().replace('.', '/'); addReplacementCall(new MethodCallReplacement(jvmOriginal, "getStackTrace", "()[Ljava/lang/StackTraceElement;", Opcodes.INVOKEVIRTUAL, jvmMock, "replacement_getStackTrace", "(Ljava/lang/Throwable;)[Ljava/lang/StackTraceElement;", false, false)); addReplacementCall(new MethodCallReplacement(jvmOriginal, "printStackTrace", "(Ljava/io/PrintStream;)V", Opcodes.INVOKEVIRTUAL, jvmMock, "replacement_printStackTrace", "(Ljava/lang/Throwable;Ljava/io/PrintStream;)V", false, false)); addReplacementCall(new MethodCallReplacement(jvmOriginal, "printStackTrace", "(Ljava/io/PrintWriter;)V", Opcodes.INVOKEVIRTUAL, jvmMock, "replacement_printStackTrace", "(Ljava/lang/Throwable;Ljava/io/PrintWriter;)V", false, false));
mockedArgumentTypes[i + 1] = argumentTypes[i]; String mockedDesc = Type.getMethodDescriptor(Type.getReturnType(m), mockedArgumentTypes); addReplacementCall(new MethodCallReplacement(target.getCanonicalName().replace('.', '/'), m.getName(), desc, Opcodes.INVOKEVIRTUAL, mockClass.getCanonicalName().replace('.', '/'), m.getName(), mockedDesc, false, false));
addReplacementCall(new MethodCallReplacement("java/lang/System", "exit", "(I)V", Opcodes.INVOKESTATIC, PackageInfo.getNameWithSlash(org.evosuite.runtime.System.class), "exit", "(I)V", false, false)); addReplacementCall(new MethodCallReplacement("java/lang/System", "setSecurityManager", "(Ljava/lang/SecurityManager;)V", Opcodes.INVOKESTATIC, PackageInfo.getNameWithSlash(org.evosuite.runtime.System.class), "setSecurityManager", "(Ljava/lang/SecurityManager;)V", false, false)); addReplacementCall(new MethodCallReplacement("java/lang/System", "currentTimeMillis", "()J", Opcodes.INVOKESTATIC, PackageInfo.getNameWithSlash(org.evosuite.runtime.System.class), "currentTimeMillis", "()J", false, false)); addReplacementCall(new MethodCallReplacement("java/lang/System", "nanoTime", "()J", Opcodes.INVOKESTATIC, PackageInfo.getNameWithSlash(org.evosuite.runtime.System.class), "nanoTime", "()J", false, false)); addReplacementCall(new MethodCallReplacement("java/lang/System", "identityHashCode", "(Ljava/lang/Object;)I", Opcodes.INVOKESTATIC, "org/evosuite/runtime/System", "identityHashCode", "(Ljava/lang/Object;)I", false, false)); addReplacementCall(new MethodCallReplacement("java/lang/Object", "hashCode", "()I", Opcodes.INVOKEVIRTUAL, PackageInfo.getNameWithSlash(org.evosuite.runtime.System.class), "identityHashCode", "(Ljava/lang/Object;)I", false, false)); addReplacementCall(new MethodCallReplacement("java/lang/Object", "toString", "()Ljava/lang/String;", Opcodes.INVOKEVIRTUAL, PackageInfo.getNameWithSlash(org.evosuite.runtime.System.class), "toString", "(Ljava/lang/Object;)Ljava/lang/String;", false, false)); addReplacementCall(new MethodCallReplacement("java/lang/Math", "random", "()D", Opcodes.INVOKESTATIC, PackageInfo.getNameWithSlash(org.evosuite.runtime.Random.class), "nextDouble", "()D", false, false)); addReplacementCall(new MethodCallReplacement("java/lang/Class", "getClasses", "()[Ljava/lang/Class;", Opcodes.INVOKEVIRTUAL, PackageInfo.getNameWithSlash(org.evosuite.runtime.Reflection.class), "getClasses", "(Ljava/lang/Class;)[Ljava/lang/Class;", false, false)); addReplacementCall( new MethodCallReplacement("java/lang/Class", "getAnnotations", "()[Ljava/lang/annotation/Annotation;",
private MethodCallReplacementCache() { if (RuntimeSettings.mockJVMNonDeterminism) { // java.lang.* addJavaLangCalls(); // javax.swing.JComponent.getPreferredSize() addReplacementCall(new MethodCallReplacement("javax/swing/JComponent", "getPreferredSize", "()Ljava/awt/Dimension;", Opcodes.INVOKEVIRTUAL, PackageInfo.getNameWithSlash(org.evosuite.runtime.mock.javax.swing.MockJComponent.class), "getPreferredSize", "()Ljava/awt/Dimension;", true, false)); addExtraceExceptionReplacements(); } handleMockList(); }