Pra*_*ala 5 java mockito powermockito
我最近开始为现有项目开发 TDD 并面临几个问题,其中一个在下面提到
我有一个要在测试类中模拟的私有变量,该变量如下所示
private Class<XYZ> cls = XYZ.class;
Run Code Online (Sandbox Code Playgroud)
后来这个“cls”变量被用作类名方法之一的参数
private List create(Class className, Object objectTO, List<String> names)
Run Code Online (Sandbox Code Playgroud)
我知道可以模拟私有变量,并且我按照以下步骤模拟了测试用例中的私有变量
java.lang.reflect.Field;Field field = PowerMockito.field(XYZ.class,"cls");field.set(XYZ.class, "objectOfXYZClass");当我运行测试类时,出现以下错误
java.lang.IllegalArgumentException: Can not set java.lang.Class field com.tools.XYZ.cls to java.lang.Class
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:164)
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:168)
at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:55)
at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:75)
at java.lang.reflect.Field.set(Field.java:680)
Run Code Online (Sandbox Code Playgroud)
请有人帮我解决这个问题,让我知道我错过了什么。
PS:我使用@preparefortest并提到了所有必需的类,并使用运行我的测试类@runwith(powermockrunner.class)
field.set(instanceOfClassXYZ, "")
Run Code Online (Sandbox Code Playgroud)
放入集合中,类的实例。不是上课。因为您正在将字符串“objectOfXYZClass”设置为对象。不进入班级;)我想补充一下
field.setAccessible(true);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5234 次 |
| 最近记录: |