java - 有什么方法可以模拟其他类中的私有方法
问题描述
据我所知,我们可以使用 PowerMockito 在同一类中模拟私有方法。
在同一个班级对我来说工作正常,但是当我从另一个班级调用私有方法时它不起作用。
下面的示例我有 2 个类,Service 类和 Helper 类
具有私有方法的助手类。
@RunWith(PowerMockRunner.class)
@PrepareForTest({ Helper.class,Service.class })
@PowerMockIgnore("javax.management.*")
public class EPartnerBatchServiceTest {
private Helper helper;
@InjectMocks
private ServiceClass serviceClass;
@Before
public void setUp() throws Exception {
helper = PowerMockito.spy(new Helper());
ServiceClass = PowerMockito.spy(new serviceClass());
MockitoAnnotations.initMocks(this);
}
@Test
public void testUpdateIndividualUserStatus() throws Exception {
PowerMockito.doReturn("Test").when(helper, "privateMethod", anyString(), Matchers.anyObject());
String response = serviceClass.update(loggerId, activityLogDTO);
}
}
示例类:
Class A{
value=new B().method1();
}
Class B{
public method1(){
value = method2();
}
private method2(){
return "Test";
}
}
解决方案
您不必担心显式测试您的私有方法,因为调用它的人无法访问它们,它的功能应该在您的公共方法流程中的某个地方进行测试。但是,如果由于某种原因您需要明确地测试它们,那么反射和将这些方法设置为可访问的测试可能会解决您的问题。
你会在这里找到很好的例子:https ://www.baeldung.com/java-method-reflection
推荐阅读
- javascript - 在 Web 开发中排列按钮 div 的正确方法
- go - 在 geth 1.9.25v 中选择案例选择
- c# - 返回对象类型作为接口 C#
- react-native - 使用 testing-library/react-native 在 react native 中集成测试以获取动态下拉列表
- amazon-web-services - 无法配置 terraform 动态块
- html - 如何将悬停效果应用于 2 个不同的元素
- python - 是否可以修复 tfpl.IndependentNormal 中的均值/var arg?
- r - 从 R 中的位置字符串中查找城市、州和国家/地区信息
- python - RuntimeWarning:从未等待协程“current_time”返回浮点(anyio.current_time())
- flutter - 当我在颤振中使用带有本地小部件的final时,我应该添加类类型吗?