From e13dce7ac68426af1faa08d2baf9f60302f05392 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=91=E6=88=9F?= Date: Sat, 22 May 2021 11:12:58 +0800 Subject: [PATCH] prefer to use minimal exception count --- .../testable/core/tool/OmniConstructor.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/testable-core/src/main/java/com/alibaba/testable/core/tool/OmniConstructor.java b/testable-core/src/main/java/com/alibaba/testable/core/tool/OmniConstructor.java index 73fe582..daceb34 100644 --- a/testable-core/src/main/java/com/alibaba/testable/core/tool/OmniConstructor.java +++ b/testable-core/src/main/java/com/alibaba/testable/core/tool/OmniConstructor.java @@ -253,13 +253,18 @@ public class OmniConstructor { private static Constructor getBestConstructor(Class clazz) { Constructor bestConstructor = null; - int minimalParametersSize = 999; + int minimalExceptionCount = 999; + int minimalParameterCount = 999; for (Constructor constructor : clazz.getDeclaredConstructors()) { - Class[] types = constructor.getParameterTypes(); - if (types.length == 1 && types[0].equals(Void.class)) { + Class[] parameterTypes = constructor.getParameterTypes(); + Class[] exceptionTypes = constructor.getExceptionTypes(); + if (parameterTypes.length == 1 && parameterTypes[0].equals(Void.class)) { return constructor; - } else if (types.length < minimalParametersSize) { - minimalParametersSize = types.length; + } else if (exceptionTypes.length < minimalExceptionCount) { + minimalExceptionCount = exceptionTypes.length; + bestConstructor = constructor; + } else if (parameterTypes.length < minimalParameterCount) { + minimalParameterCount = parameterTypes.length; bestConstructor = constructor; } }