diff --git a/demo/java-demo/pom.xml b/demo/java-demo/pom.xml
index 889fb31..01930e1 100644
--- a/demo/java-demo/pom.xml
+++ b/demo/java-demo/pom.xml
@@ -16,7 +16,7 @@
1.8
- 0.2.2-SNAPSHOT
+ 0.3.0
diff --git a/demo/kotlin-demo/pom.xml b/demo/kotlin-demo/pom.xml
index 07b4673..64e5f54 100644
--- a/demo/kotlin-demo/pom.xml
+++ b/demo/kotlin-demo/pom.xml
@@ -17,7 +17,7 @@
1.81.3.72
- 0.2.2-SNAPSHOT
+ 0.3.0
diff --git a/testable-agent/pom.xml b/testable-agent/pom.xml
index 33c5862..df2af0d 100755
--- a/testable-agent/pom.xml
+++ b/testable-agent/pom.xml
@@ -5,7 +5,7 @@
4.0.0com.alibaba.testabletestable-agent
- 0.2.2-SNAPSHOT
+ 0.3.0jartestable-agentUnit test enhancement toolkit
@@ -35,14 +35,14 @@
UTF-88.0.15.6.2
- 0.2.2-SNAPSHOT
+ 0.3.03.8.13.0.0-M53.2.03.2.43.2.03.2.0
- 1.6.0
+ 1.61.6.8
@@ -174,7 +174,7 @@
${plugin.staging.version}true
- ossrh
+ osshttps://oss.sonatype.org/true
diff --git a/testable-agent/src/main/java/com/alibaba/testable/agent/util/AnnotationUtil.java b/testable-agent/src/main/java/com/alibaba/testable/agent/util/AnnotationUtil.java
index b15eeb0..4e9effb 100644
--- a/testable-agent/src/main/java/com/alibaba/testable/agent/util/AnnotationUtil.java
+++ b/testable-agent/src/main/java/com/alibaba/testable/agent/util/AnnotationUtil.java
@@ -9,8 +9,14 @@ public class AnnotationUtil {
/**
* Read value of annotation parameter
+ * @param template of target parameter type
+ * @param an annotation node
+ * @param key name of parameter to look for
+ * @param defaultValue value if parameter not exist
+ * @param clazz type of target parameter
+ * @return value of parameter
*/
- public static T getAnnotationParameter(AnnotationNode an, String key, T defaultValue, Class clazz) {
+ public static T getAnnotationParameter(AnnotationNode an, String key, T defaultValue, Class clazz) {
if (an.values != null) {
for (int i = 0; i < an.values.size(); i += 2) {
if (an.values.get(i).equals(key)) {
diff --git a/testable-agent/src/main/java/com/alibaba/testable/agent/util/ClassUtil.java b/testable-agent/src/main/java/com/alibaba/testable/agent/util/ClassUtil.java
index 5b1cd48..57529ce 100644
--- a/testable-agent/src/main/java/com/alibaba/testable/agent/util/ClassUtil.java
+++ b/testable-agent/src/main/java/com/alibaba/testable/agent/util/ClassUtil.java
@@ -65,6 +65,7 @@ public class ClassUtil {
* Check whether any method in specified class has specified annotation
* @param className class that need to explore
* @param annotationName annotation to look for
+ * @return found annotation or not
*/
public static boolean anyMethodHasAnnotation(String className, String annotationName) {
String cacheKey = className + JOINER + annotationName;
@@ -95,6 +96,7 @@ public class ClassUtil {
/**
* fit kotlin companion class name to original name
* @param name a class name (which could be a companion class)
+ * @return is companion class or not
*/
public static boolean isCompanionClassName(String name) {
return name.endsWith("$Companion");
@@ -103,6 +105,7 @@ public class ClassUtil {
/**
* fit kotlin companion class name to original name
* @param name a class name (which could be a companion class)
+ * @return original name
*/
public static String fitCompanionClassName(String name) {
return name.replaceAll("\\$Companion$", "");
@@ -111,6 +114,7 @@ public class ClassUtil {
/**
* get test class name from source class name
* @param sourceClassName source class name
+ * @return test class name
*/
public static String getTestClassName(String sourceClassName) {
return sourceClassName + ConstPool.TEST_POSTFIX;
@@ -119,6 +123,7 @@ public class ClassUtil {
/**
* get source class name from test class name
* @param testClassName test class name
+ * @return source class name
*/
public static String getSourceClassName(String testClassName) {
return testClassName.substring(0, testClassName.length() - ConstPool.TEST_POSTFIX.length());
@@ -126,6 +131,8 @@ public class ClassUtil {
/**
* parse method desc, fetch parameter types
+ * @param desc method description
+ * @return list of parameter types
*/
public static List getParameterTypes(String desc) {
List parameterTypes = new ArrayList();
@@ -151,6 +158,8 @@ public class ClassUtil {
/**
* parse method desc, fetch return value types
+ * @param desc method description
+ * @return types of return value
*/
public static String getReturnType(String desc) {
int returnTypeEdge = desc.lastIndexOf(PARAM_END);
@@ -169,6 +178,7 @@ public class ClassUtil {
/**
* Get method node to convert primary type to object type
* @param type primary type to convert
+ * @return converter method node
*/
public static MethodInsnNode getPrimaryTypeConvertMethod(Byte type) {
String objectType = TYPE_MAPPING.get(type);
@@ -176,12 +186,10 @@ public class ClassUtil {
new MethodInsnNode(INVOKESTATIC, objectType, METHOD_VALUE_OF, toDescriptor(type, objectType), false);
}
- private static String toDescriptor(Byte type, String objectType) {
- return "(" + (char)type.byteValue() + ")L" + objectType + ";";
- }
-
/**
* convert slash separated name to dot separated name
+ * @param name original name
+ * @return converted name
*/
public static String toDotSeparatedName(String name) {
return name.replace(ConstPool.SLASH, ConstPool.DOT);
@@ -189,6 +197,8 @@ public class ClassUtil {
/**
* convert dot separated name to slash separated name
+ * @param name original name
+ * @return converted name
*/
public static String toSlashSeparatedName(String name) {
return name.replace(ConstPool.DOT, ConstPool.SLASH);
@@ -196,6 +206,8 @@ public class ClassUtil {
/**
* convert dot separated name to byte code class name
+ * @param className original name
+ * @return converted name
*/
public static String toByteCodeClassName(String className) {
return (char)TYPE_CLASS + toSlashSeparatedName(className) + (char)CLASS_END;
@@ -203,6 +215,8 @@ public class ClassUtil {
/**
* convert byte code class name to dot separated human readable name
+ * @param className original name
+ * @return converted name
*/
public static String toDotSeparateFullClassName(String className) {
return toDotSeparatedName(className).substring(1, className.length() - 1);
@@ -210,11 +224,17 @@ public class ClassUtil {
/**
* convert byte code class name to slash separated human readable name
+ * @param className original name
+ * @return converted name
*/
public static String toSlashSeparateFullClassName(String className) {
return toSlashSeparatedName(className).substring(1, className.length() - 1);
}
+ private static String toDescriptor(Byte type, String objectType) {
+ return "(" + (char)type.byteValue() + ")L" + objectType + ";";
+ }
+
private static boolean isPrimaryType(byte b) {
return b == TYPE_BYTE || b == TYPE_CHAR || b == TYPE_DOUBLE || b == TYPE_FLOAT
|| b == TYPE_INT || b == TYPE_LONG || b == TYPE_SHORT || b == TYPE_BOOL;
diff --git a/testable-agent/src/main/java/com/alibaba/testable/agent/util/CollectionUtil.java b/testable-agent/src/main/java/com/alibaba/testable/agent/util/CollectionUtil.java
index b08222b..3d85fd9 100644
--- a/testable-agent/src/main/java/com/alibaba/testable/agent/util/CollectionUtil.java
+++ b/testable-agent/src/main/java/com/alibaba/testable/agent/util/CollectionUtil.java
@@ -11,8 +11,9 @@ public class CollectionUtil {
* Check two collection has any equaled item
* @param collectionLeft the first collection
* @param collectionRight the second collection
+ * @return found or not
*/
- public static boolean containsAny(Collection collectionLeft, Collection collectionRight) {
+ public static boolean containsAny(Collection> collectionLeft, Collection> collectionRight) {
for (Object o : collectionLeft) {
for (Object i : collectionRight) {
if (o.equals(i)) {
@@ -26,6 +27,7 @@ public class CollectionUtil {
/**
* Generate a list of item
* @param items elements to add
+ * @return a ArrayList of provided elements
*/
public static List listOf(T... items) {
List list = new ArrayList(items.length);
diff --git a/testable-agent/src/main/java/com/alibaba/testable/agent/util/StringUtil.java b/testable-agent/src/main/java/com/alibaba/testable/agent/util/StringUtil.java
index 40e2f5a..4e2619b 100644
--- a/testable-agent/src/main/java/com/alibaba/testable/agent/util/StringUtil.java
+++ b/testable-agent/src/main/java/com/alibaba/testable/agent/util/StringUtil.java
@@ -9,6 +9,7 @@ public class StringUtil {
* repeat a text many times
* @param text content to repeat
* @param times count of repeating
+ * @return joined string
*/
public static String repeat(String text, int times) {
StringBuilder sb = new StringBuilder();
diff --git a/testable-core/pom.xml b/testable-core/pom.xml
index 8e77f0a..a192c9f 100644
--- a/testable-core/pom.xml
+++ b/testable-core/pom.xml
@@ -5,7 +5,7 @@
4.0.0com.alibaba.testabletestable-core
- 0.2.2-SNAPSHOT
+ 0.3.0jartestable-coreUnit test enhancement toolkit
@@ -38,7 +38,7 @@
3.0.0-M53.2.03.2.0
- 1.6.0
+ 1.61.6.8
@@ -122,7 +122,7 @@
${plugin.staging.version}true
- ossrh
+ osshttps://oss.sonatype.org/true
diff --git a/testable-core/src/main/java/com/alibaba/testable/core/matcher/InvokeVerifier.java b/testable-core/src/main/java/com/alibaba/testable/core/matcher/InvokeVerifier.java
index e03ae15..add69e0 100644
--- a/testable-core/src/main/java/com/alibaba/testable/core/matcher/InvokeVerifier.java
+++ b/testable-core/src/main/java/com/alibaba/testable/core/matcher/InvokeVerifier.java
@@ -23,6 +23,7 @@ public class InvokeVerifier {
/**
* Get counter to check whether specified mock method invoked
* @param mockMethodName name of a mock method
+ * @return the verifier object
*/
public static InvokeVerifier verify(String mockMethodName) {
String testClass = Thread.currentThread().getStackTrace()[InvokeRecordUtil.INDEX_OF_TEST_CLASS].getClassName();
@@ -33,6 +34,7 @@ public class InvokeVerifier {
/**
* Expect mock method invoked with specified parameters
* @param args parameters to compare
+ * @return the verifier object
*/
public InvokeVerifier with(Object... args) {
boolean found = false;
@@ -55,6 +57,7 @@ public class InvokeVerifier {
/**
* Expect next mock method call was invoked with specified parameters
* @param args parameters to compare
+ * @return the verifier object
*/
public InvokeVerifier withInOrder(Object... args) {
withInternal(args, 0);
@@ -65,6 +68,7 @@ public class InvokeVerifier {
/**
* Expect mock method had never invoked with specified parameters
* @param args parameters to compare
+ * @return the verifier object
*/
public InvokeVerifier without(Object... args) {
for (Object[] r : records) {
@@ -86,6 +90,7 @@ public class InvokeVerifier {
/**
* Expect mock method have been invoked specified times
* @param expectedCount times to compare
+ * @return the verifier object
*/
public InvokeVerifier withTimes(int expectedCount) {
if (expectedCount != records.size()) {
@@ -98,6 +103,7 @@ public class InvokeVerifier {
/**
* Expect several consecutive invocations with the same parameters
* @param count number of invocations
+ * @return the verifier object
*/
public InvokeVerifier times(int count) {
if (lastVerification == null) {
diff --git a/testable-core/src/main/java/com/alibaba/testable/core/util/InvokeRecordUtil.java b/testable-core/src/main/java/com/alibaba/testable/core/util/InvokeRecordUtil.java
index 88a4b1c..28874c0 100644
--- a/testable-core/src/main/java/com/alibaba/testable/core/util/InvokeRecordUtil.java
+++ b/testable-core/src/main/java/com/alibaba/testable/core/util/InvokeRecordUtil.java
@@ -11,18 +11,20 @@ import java.util.Map;
public class InvokeRecordUtil {
/**
- * Mock method name -> List of invoke parameters
+ * Mock method name → List of invoke parameters
*/
private static final Map> INVOKE_RECORDS = new HashMap>();
private final static String JOINER = "::";
/**
- * [0]Thread -> [1]TestableUtil/TestableTool -> [2]TestClass
+ * [0]Thread → [1]TestableUtil/TestableTool → [2]TestClass
*/
public static final int INDEX_OF_TEST_CLASS = 2;
/**
* Record mock method invoke event
+ * @param args invocation parameters
+ * @param isConstructor whether mocked method is constructor
*/
public static void recordMockInvoke(Object[] args, boolean isConstructor) {
StackTraceElement mockMethodTraceElement = Thread.currentThread().getStackTrace()[INDEX_OF_TEST_CLASS];
@@ -41,6 +43,9 @@ public class InvokeRecordUtil {
/**
* Get mock method invoke count
+ * @param mockMethodName mock method name
+ * @param testCaseName test case name
+ * @return parameters used when specified method invoked in specified test case
*/
public static List