diff --git a/testable-agent/src/main/java/com/alibaba/testable/agent/config/PropertiesParser.java b/testable-agent/src/main/java/com/alibaba/testable/agent/config/PropertiesParser.java index 2c58e9c..3ecdd5e 100644 --- a/testable-agent/src/main/java/com/alibaba/testable/agent/config/PropertiesParser.java +++ b/testable-agent/src/main/java/com/alibaba/testable/agent/config/PropertiesParser.java @@ -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); } } } diff --git a/testable-agent/src/main/java/com/alibaba/testable/agent/transformer/TestableClassTransformer.java b/testable-agent/src/main/java/com/alibaba/testable/agent/transformer/TestableClassTransformer.java index 8ec2fd6..84585cd 100644 --- a/testable-agent/src/main/java/com/alibaba/testable/agent/transformer/TestableClassTransformer.java +++ b/testable-agent/src/main/java/com/alibaba/testable/agent/transformer/TestableClassTransformer.java @@ -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(); } } diff --git a/testable-agent/src/main/java/com/alibaba/testable/agent/util/GlobalConfig.java b/testable-agent/src/main/java/com/alibaba/testable/agent/util/GlobalConfig.java index ff13dd4..4238d50 100644 --- a/testable-agent/src/main/java/com/alibaba/testable/agent/util/GlobalConfig.java +++ b/testable-agent/src/main/java/com/alibaba/testable/agent/util/GlobalConfig.java @@ -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 pkgPrefixes = new ArrayList(); 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 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; + } }