From 76cff451230be37f9d3dfa74be8e21ea938968b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=91=E6=88=9F?= Date: Wed, 16 Nov 2022 00:01:26 +0800 Subject: [PATCH] feat: support generate class with dollar in name --- .../testable/core/util/ConstructionUtil.java | 2 +- .../testable/core/util/ConstructionUtilTest.java | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/testable-core/src/main/java/com/alibaba/testable/core/util/ConstructionUtil.java b/testable-core/src/main/java/com/alibaba/testable/core/util/ConstructionUtil.java index 7624fdb..e28e490 100644 --- a/testable-core/src/main/java/com/alibaba/testable/core/util/ConstructionUtil.java +++ b/testable-core/src/main/java/com/alibaba/testable/core/util/ConstructionUtil.java @@ -85,7 +85,7 @@ public class ConstructionUtil { private static String getClassName(Type clazz) { if (clazz instanceof Class) { - return ((Class)clazz).getName().replace(DOLLAR, DOT); + return ((Class)clazz).getCanonicalName(); } return clazz.toString(); } diff --git a/testable-core/src/test/java/com/alibaba/testable/core/util/ConstructionUtilTest.java b/testable-core/src/test/java/com/alibaba/testable/core/util/ConstructionUtilTest.java index de9ee30..7bb30ec 100644 --- a/testable-core/src/test/java/com/alibaba/testable/core/util/ConstructionUtilTest.java +++ b/testable-core/src/test/java/com/alibaba/testable/core/util/ConstructionUtilTest.java @@ -47,6 +47,10 @@ class ConstructionUtilTest { public abstract P getByMap(Map m); } + public interface StringMap extends Map {} + + public interface Inner$Interface {} + @Test void should_generate_empty_interface() throws Exception { EmptyInterface ins = ConstructionUtil.generateSubClassOf(EmptyInterface.class); @@ -71,6 +75,18 @@ class ConstructionUtilTest { assertNotNull(ins); } + @Test + void should_generate_typed_interface() throws Exception { + StringMap ins = ConstructionUtil.generateSubClassOf(StringMap.class); + assertNotNull(ins); + } + + @Test + void should_generate_name_with_dollar() throws Exception { + Inner$Interface ins = ConstructionUtil.generateSubClassOf(Inner$Interface.class); + assertNotNull(ins); + } + @Test void should_get_class_name() throws Exception { // common class, e.g. String