我正在为具有多个参数且具有私有访问说明符的方法编写 Junit 。我正在使用Java反射来实现这一目标。但是,此私有方法的参数之一是私有类。我在下面做:
ClassHavingPrivateMethod object = new ClassHavingPrivateMethod();
object.getClass().getDeclaredMethod(PRIVATE_METHOD_NAME, Param1.class, <This parameter is a private class Inside ClassHavingPrivateMethod>)
我该怎么办?
修改
我同意我不应该为具有反射的私有方法编写测试用例,并且应该始终通过包装器公共方法访问它。但是,有没有办法通过反思来实现上述目标。尽管如此,我不打算通过反思来编写我的测试用例,但我很想知道它。
非常感谢任何帮助。
答案 0 :(得分:2)
您可以尝试将访问权限从私有更改为默认。通过将访问级别更改为默认值,另一方面,只能从同一个包(仍限制访问)访问该方法,因为您的测试类和测试类将在同一个包下,测试类可以直接调用该方法,而不需要任何技巧。
示例:
package com.test;
class SomeClass {
String defaultMethod(){
...
}
}
package com.test;
class SomeClassTest {
public void testDefaultMethod(){
SomeClass testObject = new SomeClass();
testObject.defaultMethod();
}
}
&#13;
希望它会有所帮助。