mirror of
https://github.com/alibaba/testable-mock.git
synced 2025-02-13 21:31:08 +08:00
support private method invoke with null parameter
This commit is contained in:
parent
369c2bd192
commit
6951b98c7e
@ -32,7 +32,7 @@ public class DemoPrivateAccess {
|
||||
* private static method with arguments
|
||||
*/
|
||||
private static String privateStaticFuncWithArgs(String str, int i) {
|
||||
return str + " + " + i;
|
||||
return (str == null ? "null" : str) + " + " + i;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -8,6 +8,7 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertNull;
|
||||
|
||||
/**
|
||||
* 演示私有成员访问功能
|
||||
@ -57,6 +58,20 @@ class DemoPrivateAccessTest {
|
||||
void should_able_to_update_final_field() {
|
||||
demoPrivateAccess.pi = 4.13;
|
||||
assertEquals(Double.valueOf(4.13), demoPrivateAccess.pi);
|
||||
|
||||
PrivateAccessor.set(demoPrivateAccess, "pi", 3.14);
|
||||
assertEquals(Double.valueOf(3.14), PrivateAccessor.get(demoPrivateAccess, "pi"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void should_able_to_use_null_parameter() {
|
||||
demoPrivateAccess.pi = null;
|
||||
assertNull(demoPrivateAccess.pi);
|
||||
assertEquals("null + 1", DemoPrivateAccess.privateStaticFuncWithArgs(null, 1));
|
||||
|
||||
PrivateAccessor.set(demoPrivateAccess, "pi", null);
|
||||
assertNull(PrivateAccessor.get(demoPrivateAccess, "pi"));
|
||||
assertEquals("null + 1", PrivateAccessor.invokeStatic(DemoPrivateAccess.class, "privateStaticFuncWithArgs", null, 1));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -15,7 +15,8 @@ public class TypeUtil {
|
||||
public static Class<?>[] getClassesFromObjects(Object[] parameterObjects) {
|
||||
Class<?>[] cs = new Class[parameterObjects.length];
|
||||
for (int i = 0; i < cs.length; i++) {
|
||||
cs[i] = parameterObjects[i].getClass();
|
||||
Object pObj = parameterObjects[i];
|
||||
cs[i] = (pObj == null) ? null : pObj.getClass();
|
||||
}
|
||||
return cs;
|
||||
}
|
||||
@ -41,7 +42,7 @@ public class TypeUtil {
|
||||
/**
|
||||
* type equals
|
||||
* @param classesLeft class to be compared
|
||||
* @param classesRight class to compare
|
||||
* @param classesRight class to compare (item can be null)
|
||||
* @return whether all class equals
|
||||
*/
|
||||
private static boolean typeEquals(Class<?>[] classesLeft, Class<?>[] classesRight) {
|
||||
@ -49,6 +50,9 @@ public class TypeUtil {
|
||||
return false;
|
||||
}
|
||||
for (int i = 0; i < classesLeft.length; i++) {
|
||||
if (classesRight[i] == null) {
|
||||
return !classesLeft[i].isPrimitive();
|
||||
}
|
||||
if (!classesLeft[i].isAssignableFrom(classesRight[i]) && !fuzzyEqual(classesLeft[i], classesRight[i])) {
|
||||
return false;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user