Можем ли мы издеваться над методом с помощью powermockito и testng?

Я пишу тестовый набор TestNG, который расширяет atgdustcase. Мне нужно смоделировать метод в классе B. Этот класс B вводится в класс A с помощью файла свойств в ATG. Класс 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 () и выдает ошибку (проблема с выполнением заключается в том, что мне нужно извлечь некоторые записи из БД. Мне нужно смоделировать этот метод и вернуть карту, которая содержит информацию, полученную из БД). Я не уверен, правильно ли происходит mocking или нет, так как в режиме отладки я вижу, что getMethodToMock () вызывается. Пожалуйста, помогите мне, как я могу издеваться над этим методом и пропустить выполнение этого метода.

Примечание. Я пытался использовать Powermockito, но мой тестовый набор - TestNGsuite. Мне нужно запустить TestNGSuite вместо того, чтобы запускать его как Junit.

0 ответов

Другие вопросы по тегам