extra <init> constant to core package

This commit is contained in:
金戟 2021-02-18 13:25:51 +08:00
parent 6a5c817a3a
commit 8be5550331
6 changed files with 19 additions and 15 deletions

View File

@ -22,9 +22,4 @@ public class ConstPool {
public static final String KOTLIN_POSTFIX_COMPANION = "$Companion";
public static final String KOTLIN_PREFIX_ACCESS = "access$";
/**
* Name of the constructor method
*/
public static final String CONSTRUCTOR = "<init>";
}

View File

@ -12,6 +12,7 @@ import org.objectweb.asm.tree.*;
import java.util.List;
import static com.alibaba.testable.agent.util.ClassUtil.toDotSeparateFullClassName;
import static com.alibaba.testable.core.constant.ConstPool.CONSTRUCTOR;
/**
* @author flin
@ -60,7 +61,7 @@ public class MockClassHandler extends BaseClassWithContextHandler {
il.add(new JumpInsnNode(IFNONNULL, label));
il.add(new TypeInsnNode(NEW, mockClassName));
il.add(new InsnNode(DUP));
il.add(new MethodInsnNode(INVOKESPECIAL, mockClassName, ConstPool.CONSTRUCTOR, VOID_ARGS + VOID_RES, false));
il.add(new MethodInsnNode(INVOKESPECIAL, mockClassName, CONSTRUCTOR, VOID_ARGS + VOID_RES, false));
il.add(new FieldInsnNode(PUTSTATIC, mockClassName, TESTABLE_REF, ClassUtil.toByteCodeClassName(mockClassName)));
il.add(label);
il.add(new FrameNode(F_SAME, 0, null, 0, null));
@ -159,10 +160,10 @@ public class MockClassHandler extends BaseClassWithContextHandler {
methodName = name;
}
} else if (ClassUtil.toByteCodeClassName(ConstPool.MOCK_CONSTRUCTOR).equals(an.desc)) {
methodName = ConstPool.CONSTRUCTOR;
methodName = CONSTRUCTOR;
}
}
if (methodName.equals(ConstPool.CONSTRUCTOR)) {
if (methodName.equals(CONSTRUCTOR)) {
className = Type.getType(ClassUtil.getReturnType(mn.desc));
} else {
className = Type.getType(ClassUtil.getFirstParameter(mn.desc));
@ -242,7 +243,7 @@ public class MockClassHandler extends BaseClassWithContextHandler {
} else if (ConstPool.MOCK_METHOD.equals(annotationName)) {
String method = AnnotationUtil.getAnnotationParameter
(an, ConstPool.FIELD_TARGET_METHOD, null, String.class);
if (ConstPool.CONSTRUCTOR.equals(method)) {
if (CONSTRUCTOR.equals(method)) {
return true;
}
}

View File

@ -13,7 +13,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
import static com.alibaba.testable.agent.constant.ConstPool.CONSTRUCTOR;
import static com.alibaba.testable.core.constant.ConstPool.CONSTRUCTOR;
/**
* @author flin

View File

@ -17,6 +17,7 @@ import java.util.ArrayList;
import java.util.List;
import static com.alibaba.testable.agent.util.ClassUtil.toDotSeparateFullClassName;
import static com.alibaba.testable.core.constant.ConstPool.CONSTRUCTOR;
public class MockClassParser {
@ -96,7 +97,7 @@ public class MockClassParser {
LogUtil.verbose(" Mock method \"%s\" as \"%s\"", mn.name, getTargetMethodDesc(mn, an));
String targetMethod = AnnotationUtil.getAnnotationParameter(
an, ConstPool.FIELD_TARGET_METHOD, mn.name, String.class);
if (ConstPool.CONSTRUCTOR.equals(targetMethod)) {
if (CONSTRUCTOR.equals(targetMethod)) {
addMockConstructor(methodInfos, cn, mn);
} else {
MethodInfo mi = getMethodInfo(mn, an, targetMethod);
@ -134,7 +135,7 @@ public class MockClassParser {
private void addMockConstructor(List<MethodInfo> methodInfos, ClassNode cn, MethodNode mn) {
String sourceClassName = ClassUtil.getSourceClassName(cn.name);
methodInfos.add(new MethodInfo(sourceClassName, ConstPool.CONSTRUCTOR, mn.desc, mn.name, mn.desc));
methodInfos.add(new MethodInfo(sourceClassName, CONSTRUCTOR, mn.desc, mn.name, mn.desc));
}
/**

View File

@ -2,6 +2,14 @@ package com.alibaba.testable.core.constant;
public class ConstPool {
/**
* Name of the constructor method
*/
public static final String CONSTRUCTOR = "<init>";
/**
* Postfix or test and mock file
*/
public static final String TEST_POSTFIX = "Test";
public static final String MOCK_POSTFIX = "Mock";

View File

@ -7,8 +7,7 @@ import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import static com.alibaba.testable.core.constant.ConstPool.MOCK_POSTFIX;
import static com.alibaba.testable.core.constant.ConstPool.TEST_POSTFIX;
import static com.alibaba.testable.core.constant.ConstPool.*;
public class MockAssociationUtil {
@ -41,7 +40,7 @@ public class MockAssociationUtil {
}
public static Object invokeOrigin(Class<?> originClass, String originMethod, Object... args) {
if (originMethod.equals("<init>")) {
if (originMethod.equals(CONSTRUCTOR)) {
return PrivateAccessor.construct(originClass, args);
} else if (args[0] == null) {
return PrivateAccessor.invokeStatic(originClass, originMethod, CollectionUtil.slice(args, 1));