java 8 < /p>
maven 3.9,7 < /p>
Я хочу проверить, это личный метод был вызван 1 раз. < /p>
В моем pom.xml < /p>
org.mockito
mockito-core
3.12.4
test
org.mockito
mockito-inline
3.12.4
test
org.powermock
powermock-module-junit4
2.0.2
test
org.powermock
powermock-api-mockito2
2.0.2
test
< /code>
Здесь мой класс: < /p>
public class MyClass {
@Override
public void handle(AttendantRequestEvent event) {
String eventId = UUID.randomUUID().toString();
myPrivateMethod(eventId, eventId);
}
private void myPrivateMethod(String eventId, String eventId2) {
System.out.println("myPrivateMethod, eventId = " + eventId + ", eventId2 = " + eventId2);
}
}
< /code>
здесь модульный тест: < /p>
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.Assert.assertNotNull;
import static org.mockito.Answers.RETURNS_DEEP_STUBS;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.*;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.*;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
@RunWith(PowerMockRunner.class)
@PrepareForTest(MyClass.class)
public class MyClassTest {
@Test
public void shouldCallMyPrivateMethod() throws Exception {
try (MockedStatic utilities = Mockito.mockStatic(UUID.class)) {
AssistanceRequestsHandler assistanceRequestsHandlerMock =
PowerMockito.spy(new AssistanceRequestsHandler());
String fixedUuid = "a1b2c3d4-e5f6-7890-1234-567890abcdef";
UUID uuidMock = mock(UUID.class);
utilities.when(UUID::randomUUID).thenReturn(uuidMock);
when(uuidMock.toString()).thenReturn(fixedUuid);
// Act
assistanceRequestsHandlerMock.handle(new InfoEvent(any()));
// Assert
PowerMockito.verifyPrivate(assistanceRequestsHandlerMock, times(1))
.invoke("myPrivateMethod", fixedUuid, fixedUuid);
}
}
< /code>
И он работает просто отлично.
здесь результат: < /p>
myPrivateMethod, eventId = a1b2c3d4-e5f6-7890-1234-567890abcdef, eventId2 = a1b2c3d4-e5f6-7890-1234-567890abcdef
< /code>
nice.
Теперь я хочу использовать журнал в моем частном методе SMT private void myPrivateMethod(String eventId, String eventId2) {
Logger.info(this, "myPrivateMethod, eventId_1 = {}, eventId_2 {}", eventId, eventId2);
}
< /code>
И тест был успешно прошел, но поднимите следующую ошибку: < /p>
ScriptEngineManager providers.next(): javax.script.ScriptEngineFactory: Provider jdk.nashorn.api.scripting.NashornScriptEngineFactory not a subtype
2025-04-25 12:12:15,086 main ERROR Could not reconfigure JMX java.lang.LinkageError: loader constraint violation: loader (instance of org/powermock/core/classloader/javassist/JavassistMockClassLoader) previously initiated loading for a different type with name "javax/management/MBeanServer"
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:757)
at org.powermock.core.classloader.javassist.JavassistMockClassLoader.loadUnmockedClass(JavassistMockClassLoader.java:90)
at org.powermock.core.classloader.MockClassLoader.loadClassByThisClassLoader(MockClassLoader.java:104)
at org.powermock.core.classloader.DeferSupportingClassLoader.loadClass1(DeferSupportingClassLoader.java:147)
at org.powermock.core.classloader.DeferSupportingClassLoader.loadClass(DeferSupportingClassLoader.java:98)
at java.lang.ClassLoader.loadClass(ClassLoader.java:352)
at org.apache.logging.log4j.core.jmx.Server.unregisterAllMatching(Server.java:337)
Подробнее здесь: https://stackoverflow.com/questions/795 ... nkageerror