我正在编写一个扩展 atgdustcase 的 TestNG 测试用例。我需要模拟 B 类中的一个方法。使用 ATG 中的属性文件将这个 B 类注入到 A 类中。C 类是用于测试 A 类功能的测试类。D 是扩展 AtgDustCase 的测试类。
@RunWith(PowerMockRunner.class)
@PrepareForTest({A.class, B.class})
Public class c extends D{
@InjectGlobalComponent(Path for component A)
@InjectMocks
private A aClass;
public void testMethod(){
String string = "abc";
Map map = new HashMap();
map.put("a", "c");
aClass = getRequest.resolveName(Component A path);
B b = PowerMockito.mock(B.class);
A a = PowerMockito.spy(new A());
PowerMockito.whenNew(A.class).withNoArguments().thenReturn(a);
a.setB(B);
PowerMockito.when(a.getB()).thenReturn(b);
Mockito.stub(b.getMethodToMock(string)).toReturn(map);
Mockito.verify(b).getMethodToMock(string);
aClass.invokeTestMethod();// This method calls the b.getMethodToMock()
}
}
我需要模拟 getMethodToMock()。当我执行invokeTestMethod() 时,这会调用getMethodToMock()。那个时候,应该归还地图。相反,它正在执行 getMethodToMock() 并引发错误(执行的问题是我需要从 DB 中获取一些记录。我需要模拟此方法并返回包含从 DB 检索到的信息的映射)。我不确定模拟是否正确发生,因为在调试模式下我可以看到 getMethodToMock() 正在被调用。请帮助我如何模拟此方法并跳过此方法的执行。
注意:我尝试使用 Powermockito,但我的测试用例是 TestNGsuite。我需要运行 TestNGSuite 而不是作为 Junit 运行它。