gpt4 book ai didi

java - 如何测试具有私有(private)方法、字段或内部类的类?

转载 作者:行者123 更新时间:2023-12-01 16:04:18 31 4
gpt4 key购买 nike

如何使用 JUnit 测试具有内部私有(private)方法、字段或嵌套类的类?

仅仅为了能够运行测试而更改方法的访问修饰符似乎很糟糕。

最佳答案

如果您有一些遗留的Java应用程序,并且不允许您更改方法的可见性,则测试私有(private)方法的最佳方法是使用 reflection .

在内部,我们使用助手来获取/设置 privateprivate static变量以及调用 privateprivate static方法。以下模式将允许您执行与私有(private)方法和字段相关的几乎所有操作。当然,你不能改变private static final通过反射变量。

Method method = TargetClass.getDeclaredMethod(methodName, argClasses);
method.setAccessible(true);
return method.invoke(targetObject, argObjects);

对于字段:

Field field = TargetClass.getDeclaredField(fieldName);
field.setAccessible(true);
field.set(object, value);
<小时/>

Notes:

  1. TargetClass.getDeclaredMethod(methodName, argClasses) lets you look into private methods. The same thing applies forgetDeclaredField.
  2. The setAccessible(true) is required to play around with privates.

关于java - 如何测试具有私有(private)方法、字段或内部类的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34571/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com