support custom inner mock class name

This commit is contained in:
金戟 2021-04-17 17:16:02 +08:00
parent b8771f0dac
commit 0c063e9b1f
3 changed files with 25 additions and 9 deletions

View File

@ -20,7 +20,8 @@ public class PropertiesParser {
private static final String LOG_LEVEL = "log.level";
private static final String LOG_FILE = "log.file";
private static final String DUMP_PATH = "dump.path";
private static final String PKG_PREFIX_WHITELIST = "custom.pkgPrefix.whiteList";
private static final String PKG_PREFIX_WHITELIST = "enhance.pkgPrefix.whiteList";
private static final String INNER_MOCK_CLASS_NAME = "mock.innerClass.name";
private static final String DEFAULT_MOCK_SCOPE = "mock.scope.default";
private static final String ENABLE_THREAD_POOL = "thread.pool.enhance.enable";
private static final String ENABLE_OMNI_INJECT = "omni.constructor.enhance.enable";
@ -63,6 +64,8 @@ public class PropertiesParser {
GlobalConfig.setEnhanceThreadLocal(Boolean.parseBoolean(v));
} else if (k.equals(ENABLE_OMNI_INJECT)) {
GlobalConfig.setEnhanceOmniConstructor(Boolean.parseBoolean(v));
} else if (k.equals(INNER_MOCK_CLASS_NAME)) {
GlobalConfig.setInnerMockClassName(v);
}
}
}

View File

@ -34,8 +34,6 @@ public class TestableClassTransformer implements ClassFileTransformer {
private static final String FIELD_VALUE = "value";
private static final String FIELD_TREAT_AS = "treatAs";
private static final String COMMA = ",";
private static final String CLASS_NAME_MOCK = "Mock";
/**
* Just avoid spend time to scan those surely non-user classes, should keep these lists as tiny as possible
@ -260,7 +258,7 @@ public class TestableClassTransformer implements ClassFileTransformer {
}
private String getInnerMockClassName(String className) {
return className + DOLLAR + CLASS_NAME_MOCK;
return className + DOLLAR + GlobalConfig.getInnerMockClassName();
}
}

View File

@ -5,6 +5,8 @@ import com.alibaba.testable.core.model.MockScope;
import com.alibaba.testable.core.util.LogUtil;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import static com.alibaba.testable.agent.constant.ConstPool.PROPERTY_USER_DIR;
import static com.alibaba.testable.core.util.PathUtil.createFolder;
@ -18,15 +20,18 @@ public class GlobalConfig {
private static final String DEBUG = "debug";
private static final String VERBOSE = "verbose";
private static final String DISABLE_LOG_FILE = "null";
private static final String COMMA = ",";
private static final String DOT = ".";
private static final String TESTABLE_AGENT_LOG = "testable-agent.log";
private static String logFile = null;
private static String dumpPath = null;
private static String pkgPrefix = null;
private static List<String> pkgPrefixes = new ArrayList<String>();
private static MockScope defaultMockScope = MockScope.GLOBAL;
private static boolean enhanceThreadLocal = false;
private static boolean enhanceOmniConstructor = false;
private static String innerMockClassName = "Mock";
public static void setLogLevel(String level) {
if (level.equals(MUTE)) {
@ -53,12 +58,14 @@ public class GlobalConfig {
}
}
public static String getPkgPrefix() {
return pkgPrefix;
public static List<String> getPkgPrefixes() {
return pkgPrefixes;
}
public static void setPkgPrefix(String prefix) {
pkgPrefix = prefix;
public static void setPkgPrefixes(String prefixes) {
for (String p : prefixes.split(COMMA)) {
pkgPrefixes.add(p.endsWith(DOT) ? p : p + DOT);
}
}
public static MockScope getDefaultMockScope() {
@ -96,4 +103,12 @@ public class GlobalConfig {
public static boolean isEnhanceOmniConstructor() {
return enhanceOmniConstructor;
}
public static void setInnerMockClassName(String name) {
innerMockClassName = name;
}
public static String getInnerMockClassName() {
return innerMockClassName;
}
}