Я пытаюсь добавить Powermock в свое приложение, использующее Mockito. Это то, что у меня сейчас есть в моей сборке Gradle:
compile("junit:junit:4.12"){force = true}
compile("org.powermock:powermock-api-mockito-common:1.7.0")
compile("org.powermock:powermock-api-mockito2:1.7.0")
compile("org.powermock:powermock-api-support:1.7.0")
compile("org.powermock:powermock-core:1.7.0")
compile("org.powermock:powermock-module-junit4:1.7.0")
compile("org.powermock:powermock-module-junit4-common:1.7.0")
compile("org.powermock:powermock-reflect:1.7.0")
compile("org.javassist:javassist:3.12.0.GA")
compile("org.mockito:mockito-core:2.8.9")
Это тестовый файл, который у меня есть до сих пор...
@RunWith(PowerMockRunner.class)
@PrepareForTest(XMLTransaction.class)
public class CloseSummaryOrCloseTrailerResponseTest {
public final static String URL="WL_APPSERVER";
private XMLTransaction xmlTransaction;
@Before
public void initMocks() throws Exception {
xmlTransaction = PowerMockito.spy(new XMLTransaction(URL));
PowerMockito.doNothing().when(xmlTransaction, "initialize");
}
@Test
public void whenCloseSummaryResponseNoErrorExpectCorrectXmlMsgProduced ()
{
...test code here
}
}
Я получаю сообщение об ошибке:
java.lang.NoClassDefFoundError: org/mockito/exceptions/Reporter в sun.reflect.GeneratedSerializationConstructorAccessor8.newInstance(неизвестный источник) в java.lang.reflect.Constructor.newInstance(Constructor.java:423) в org.objenesis.instantiator.sun .SunReflectionFactoryInstantiator.newInstance(SunReflectionFactoryInstantiator.java:48) в org.powermock.reflect.internal.WhiteboxImpl.newInstance(WhiteboxImpl.java:251) в org.powermock.reflect.Whitebox.newInstance(Whitebox.java:139)
Класс Reporter должен содержаться в mockito-core. Какие дополнительные банки мне нужны? Я проверил совместимость Mockito и Powermock на этом сайте: https://github.com/powermock/powermock/wiki/Mockito#supported-versions
Но, кажется, мне не хватает какой-то другой банки.
ОБНОВЛЕНИЕ Проверил этот ответ, но он не решил мою проблему. я изменил
compile("org.powermock:powermock-api-mockito2:1.7.0")
to
compile("org.powermock:powermock-api-mockito2:1.7.0RC2")
Теперь я получаю другую ошибку:
java.lang.IllegalStateException: внутренняя ошибка API расширения: org.powermock.api.extension.proxyframework.ProxyFrameworkImpl не может быть расположен в пути к классам. в org.powermock.reflect.proxyframework.ProxyFrameworkHelper.register(ProxyFrameworkHelper.java:35)
Какая баночка для этого нужна?