Java单元测试实践-19.Mockito与PowerMock的其他功能

本文详细介绍Java单元测试中Mockito与PowerMock的高级功能,包括Mock对象的详细信息获取、私有成员变量操作、构造函数调用、定时任务禁止等,提供丰富的示例代码。

Java单元测试实践-00.目录(9万多字文档+700多测试示例)
https://blog.youkuaiyun.com/a82514921/article/details/107969340

1. Mockito与PowerMock的其他功能

1.1. 获取Mock对象详细信息

Mockito提供了用于获取Mock对象详细信息的API,可参考 https://static.javadoc.io/org.mockito/mockito-core/latest/org/mockito/Mockito.html#mocking_details 。

1.1.1. 判断指定对象是否为Mock/Spy对象

使用Mockito.mockingDetails()方法,可以获取指定对象对应的MockingDetails实例,可以获得Mock的相关信息。

MockingDetails.isMock()、isSpy()方法分别可以判断指定的对象是否为Mock对象或Spy对象。

使用MockingDetails.isMock()、isSpy()方法可以准确地判断指定的对象是Mock对象、Spy对象还是原始对象,使用示例如下,可参考示例TestSpringMockDetailIs1类。

assertFalse(Mockito.mockingDetails(new TestServiceA1Impl()).isMock());
assertFalse(Mockito.mockingDetails(new TestServiceA1Impl()).isSpy());

assertTrue(Mockito.mockingDetails(Mockito.mock(TestServiceA1.class)).isMock());
assertTrue(Mockito.mockingDetails(Mockito.spy(TestServiceA1.class)).isSpy());
1.1.1.1. 将对象中的成员变量替换为Mock/Spy对象公共方法

在替换成员变量时,为了防止覆盖原有Stub操作,可以使用MockingDetails.isMock()、isSpy()方法来准确地判断指定成员变量是否已经是Mock/Spy对象。

使用MockingDetails.isMock()、isSpy()方法判断对象是否为Mock/Spy对象的功能,将替换成员变量的操作整理为公共方法,能够实现将指定对象的指定类型成员变量替换为Mock/Spy对象,可以简化操作,并避免将现有Mock/Spy对象的Stub操作覆盖。

在示例代码中,提供了将成员变量替换为Mock/Spy对象,且可以避免覆盖原有Stub的简化公共方法。可使用示例TestReplaceUtil类的replaceMockMember、replaceSpyMember方法。

示例如下,返回的对象为testServiceB1对象中的TestServiceA1类的Mock/Spy对象:

TestServiceA1 testServiceA1InB1 = TestReplaceUtil.replaceMockMember(testServiceB1, TestServiceA1.class);

TestServiceA1 testServiceA1InB1 = TestReplaceUtil.replaceSpyMember(testServiceB1, TestServiceA1.class);

以上公共方法的使用可参考示例TestSpMockMemberOfMCommRun、TestSpMockMemberOfMCommMock、TestSpSpyMemberOfMCommRun、TestSpSpyMemberOfMCommSpy类。

1.1.2. 获取Mock对象原始类型及默认Answer等详细信息

使用MockingDetails.getMockCreationSettings()方法,可以获取对应的MockCreationSettings实例,可以获得Mock在创建时的设置。

  • 获取Mock对象原始类型

使用MockCreationSettings.getTypeToMock()方法可以获取Mock对象原始类型,使用示例如下,可参考示例TestSpringMockDetailMock1类。

assertEquals(RuntimeException.class,
        Mockito.mockingDetails(Mockito.mock(RuntimeException.class)).getMockCreationSettings().getTypeToMock());
  • 获取默认Answer

使用MockCreationSettings.getDefaultAnswer()方法可以获取Mock对象的默认Answer,使用示例如下,可参考示例TestSpringMockDetailMock1类。

assertSame(Mockito.RETURNS_DEFAULTS,
        Mockito.mockingDetails(Mockito.mock(RuntimeException.class)).getMockCreationSettings().getDefaultAnswer());

获取Spy对象的以上信息可参考示例TestSpringMockDetailSpy1类。

1.1.3. 获取Mock对象的Stub设置及方法调用情况

  • 获取Mock对象的Stub设置

使用MockingDetails.getStubbings()方法,可以获取指定Mock对象的Stub设置,类型为Collection<Stubbing>,Mock对象初始的Stub设置数量为0,每设置一个Stub条件,数量加1。

Stubbing对象的toString()方法会返回Stub的详细信息。设置以下Stub条件后,通过MockingDetails.getStubbings()方法获取Stubbing对象并打印,如下所示。可参考示例TestSpringMockDetailMock2类。

Mockito.when(testServiceA1Mock.test1(Mockito.anyString())).thenReturn(TestConstants.MOCKED);

Mockito.doAnswer(invocation -> null).when(testServiceA1Mock).test2(Mockito.any(StringBuilder.class));

Mockito.when(testServiceA1Mock.test3(Mockito.anyString())).thenThrow(new RuntimeException(TestConstants.MOCKED));
testServiceA1.test1(<any string>); stubbed with: [Returns: MOCKED]

testServiceA1.test2(
    <any java.lang.StringBuilder>
); stubbed with: [adrninistrator.test.testmock.detail.TestSpringMockDetailMock2$$Lambda$1/1692381981@4300e240]

testServiceA1.test3(<any string>); stubbed with: [org.mockito.internal.stubbing.answers.ThrowsException@5f409872]
  • 获取Mock对象的方法调用情况

使用MockingDetails.getInvocations()方法,可以获取指定Mock对象的方法调用情况,类型为Collection<Invocation>,初始数量为0,每调用一次方法,数量加1。

Invocation对象的toString()方法会返回Invocation的详细信息。调用以下方法后,通过MockingDetails.getInvocations()方法获取Invocation对象并打印,如下所示:

testServiceA1Mock.test1(TestConstants.FLAG1);

testServiceA1Mock.test2(new StringBuilder().append(TestConstants.FLAG2));
testServiceA1.test1("flag1");

testServiceA1.test2(flag2);

MockingDetails.printInvocations(),以友好的方式展示指定Mock对象已发生的的调用信息。此外,该方法还会打印Stub信息,包括未使用的Stub。该方法返回类型为String。以上Mock对象的MockingDetails.printInvocations()返回结果如下所示。可参考示例TestSpringMockDetailMock2类。

[Mockito] Interactions of: Mock for TestServiceA1, hashCode: 800722348
 1. testServiceA1.test1("flag1");
  -> at adrninistrator.test.testmock.detail.TestSpringMockDetailMock2.test(TestSpringMockDetailMock2.java:51)
   - stubbed -> at adrninistrator.test.testmock.detail.TestSpringMockDetailMock2.init(TestSpringMockDetailMock2.java:32)
 2. testServiceA1.test2(flag2);
  -> at adrninistrator.test.testmock.detail.TestSpringMockDetailMock2.test(TestSpringMockDetailMock2.java:54)
   - stubbed -> at adrninistrator.test.testmock.detail.TestSpringMockDetailMock2.init(TestSpringMockDetailMock2.java:35)

[Mockito] Unused stubbings of: Mock for TestServiceA1, hashCode: 800722348
 1. testServiceA1.test1("");
  - stubbed -> at adrninistrator.test.testmock.detail.TestSpringMockDetailMock2.init(TestSpringMockDetailMock2.java:32)
 2. testServiceA1.test2(null);
  - stubbed -> at adrninistrator.test.testmock.detail.TestSpringMockDetailMock2.init(TestSpringMockDetailMock2.java:35)
 3. testServiceA1.test3("");
  - stubbed -> at adrninistrator.test.testmock.detail.TestSpringMockDetailMock2.init(TestSpringMockDetailMock2.java:38)

获取Spy对象的以上信息可参考示例TestSpringMockDetailSpy2类。

1.2. 使用@InjectMocks注解实现Mock/Spy对象的自动注入

使用@InjectMocks注解可以实现Mock/Spy对象的自动注入。例如使用@InjectMocks注解指定C类的实例,再使用@Mock/@Spy注解指定C类中包含的成员变量A、B类的实例,可以实现将A、B类的Mock/Spy对象自动注入至C类实例中。示例如下:

@InjectMocks
private C c;

@Spy
private B b = new B();

@Mock
private A a;

@InjectMocks注解需要指定实现类对象,不能指定接口对象,否则会出现类似以下异常:

org.mockito.exceptions.base.MockitoException: 
Cannot instantiate @InjectMocks field named 'testServiceC1'! Cause: the type 'TestServiceC1' is an interface.
You haven't provided the instance at field declaration so I tried to construct the instance.

使用@InjectMocks注解指定的生成的对象为原始类的对象,不是Mock/Spy对象。以上可参考示例TestInjectMocks1、TestInjectMocks2类。

当使用@InjectMocks注解指定某类的实例时,对于未使用@Mock/@Spy注解指定的成员变量,不会被自动注入,即值为null。可参考示例TestInjectMocks3类。

1.2.1. 不推荐使用@InjectMocks注解

不推荐使用@InjectMocks注解实现Mock/Spy对象的自动注入,当需要使用与@InjectMocks注解类似的功能时,可以使用Whitebox.setInternalState()等方法通过反射的方式对成员变量进行替换。不推荐的原因如下:

  • 使用不方便

对于@InjectMocks注解指定的类的实例,需要使用@Mock/@Spy注解指定每个成员变量,未指定的成员变量值会为null;

  • 执行成员变量的真实方法不方便

对于@InjectMocks注解指定的类的实例,注入的成员变量为Mock/Spy对象,当需要执行成员变量的真实方法时不方便。

1.3. MockitoAnnotations.initMocks()方法

在测试类级别使用@PrepareForTest注解时,若未执行MockitoAnnotations.initMocks()方法,测试代码执行时使用了@InjectMocks、@Mock注解的对象为null,使用@Spy注解的对象不是null;在测试代码中执行MockitoAnnotations.initMocks()方法后,@InjectMocks、@Mock注解对应的对象会变为非null。若未在测试类中使用@InjectMocks、@Mock注解,则不需要调用MockitoAnnotations.initMocks()方法。

示例如下,可参考示例TestInitMocksNoPrepare、TestInitMocksWithPrepare1、TestInitMocksWithPrepare2类。

// 在测试类级别指定
@PrepareForTest({})

@InjectMocks
private TestServiceC1Impl testServiceC1Impl;

@Mock
private TestServiceA1 testServiceA1Mock;

@Before
public void init() {
	assertNull(testServiceC1Impl);

	assertNull(testServiceA1Mock);

	MockitoAnnotations.initMocks(this);

	assertNotNull(testServiceC1Impl);

	assertNotNull(testServiceA1Mock);
}

1.4. Mockito.reset()方法

Mockito.reset()方法可以对Mock进行重置。参考 https://static.javadoc.io/org.mockito/mockito-core/latest/org/mockito/Mockito.html#resetting_mocks 。良好的单元测试代码几乎不需要使用该功能。通常,不需要对Mock进行重置,只需要为每个测试方法创建新的Mock即可。

1.5. Mockito的Stub操作支持的对象

Mockito的Stub操作(Mockito.when()、Mockito.do…().when()等方法),只支持Mock/Spy对象,不支持原始对象。可参考示例TestStubSupport类。

1.6. 获取私有成员变量

当需要获取私有成员变量时,可使用Whitebox.getInternalState()方法,支持指定变量类型(对应类型的变量只存在一个)或变量名称获取。

也可以使用PowerMockito.field().get()方法获取私有成员变量,但不如Whitebox.getInternalState()方法简单。

示例如下,可参考示例TestGetPrivateField类。

@Autowired
private TestPublicNonVoidService1 testPublicNonVoidService1;
	
TestTableMapper testTableMapper1 = (TestTableMapper) PowerMockito.field(TestPublicNonVoidService1Impl.class,
		"testTableMapper").get(testPublicNonVoidService1);

TestTableMapper testTableMapper2 = Whitebox.getInternalState(testPublicNonVoidService1, TestTableMapper.class);

TestTableMapper testTableMapper3 = Whitebox.getInternalState(testPublicNonVoidService1, "testTableMapper");

1.6.1. 检查对象字段值是否等于预期值的简化方法

以下方法使用了Whitebox.getInternalState()方法。

示例代码中提供了检查对象字段值是否等于预期值的简化方法:TestCommonUtil.checkObjectValue(),支持对字符串、int、long、BigDecimal、Date等类型进行比较,可以避免对需要检查的对象的每个字段值逐个进行assertEquals等判断,通过数组指定需要比较的字段名称及预期值,可以减少代码量。

以上方法参数1为需要检查的对象,参数2为Object数组,内容为需要检查的信息,元素应为偶数个,下标为奇数的元素为key,下标为偶数的元素为value,使用示例如下:

Date date = new Date();

TestTable2 testTable2 = new TestTable2();
testTable2.setId(TestConstants.FLAG1);
testTable2.setChar1(TestConstants.FLAG1);
testTable2.setChar2(TestConstants.FLAG1);
testTable2.setText2(TestConstants.FLAG1);
testTable2.setInt1(1);
testTable2.setInt2(2);
testTable2.setDecimal1(100L);
testTable2.setDecimal2(BigDecimal.TEN);
testTable2.setDatetime1(date);
testTable2.setDatetime2(date);
testTable2.setTimestamp1(date);
testTable2.setTimestamp2(date);

TestCommonUtil.checkObjectValue(testTable2, new Object[]{"id", TestConstants.FLAG1, "char1", TestConstants.FLAG1,
		"char2", TestConstants.FLAG1, "text2", TestConstants.FLAG1, "int1", 1, "int2", 2, "decimal1", 100L, "decimal2", BigDecimal.TEN,
		"datetime1", date, "datetime2", date, "timestamp1", date, "timestamp2", date});

可参考示例TestCheckObjectValue类。

1.7. 替换私有成员变量

当需要替换私有成员变量时,可使用Whitebox.setInternalState()方法,支持指定变量类型,或变量名称对变量进行替换,或直接指定变量进行替换(不需要指定变量类型或名称,需要满足对应类型的变量只存在一个);当直接指定变量进行替换时,支持一次替换多个变量。

也可以使用PowerMockito.field().set()方法替换私有成员变量,但不如Whitebox.setInternalState()方法简单。

示例如下,可参考示例TestSetPrivateField类。

TestNonStatic2 testNonStatic2 = new TestNonStatic2();

PowerMockito.field(TestNonStatic2.class, "flag").set(testNonStatic2, TestConstants.FLAG1);

Whitebox.setInternalState(testNonStatic2, String.class, TestConstants.FLAG2);

Whitebox.setInternalState(testNonStatic2, TestConstants.FLAG3);

Whitebox.setInternalState(testNonStatic1, "str1", TestConstants.FLAG1);

1.8. 创建构造函数为私有的类的实例

对于构造函数为私有的类,当需要创建实例时,可以调用Whitebox.newInstance()或Whitebox.invokeConstructor()方法,示例如下:

TestPrivateConstructor2 testPrivateConstructor2 = Whitebox.newInstance(TestPrivateConstructor2.class);
TestPrivateConstructor2 testPrivateConstructor2 = Whitebox.invokeConstructor(TestPrivateConstructor2.class);

以上方法的区别在于,Whitebox.newInstance()方法不会调用构造函数,Whitebox.invokeConstructor()方法会调用构造函数。可参考示例TestNewPrivateConstructor1、TestNewPrivateConstructor2类。

1.9. 执行私有方法

当需要执行私有方法时,可使用Whitebox.invokeMethod()方法,支持执行静态私有方法及非静态私有方法。

也可以使用PowerMockito.method().invoke()方法执行私有方法,但不如Whitebox.invokeMethod()方法简单。

示例如下,可参考示例TestInvokePrivateMethod类。

@Autowired
private TestPrivateNonVoidService1 testPrivateNonVoidService1;
	
String str = Whitebox.invokeMethod(TestStaticPrivateNonVoid1.class, TestStaticPrivateNonVoid1.NAME_TEST3);

String str = Whitebox.invokeMethod(testPrivateNonVoidService1, TestPrivateNonVoidService1Impl.NAME_TEST1, "");

String str = (String) PowerMockito.method(TestPrivateNonVoidService1Impl.class, TestPrivateNonVoidService1Impl
		.NAME_TEST1).invoke(testPrivateNonVoidService1, "");

2. 使用Mock禁止Spring定时任务

在执行单元测试用例时,若满足了定时任务的执行时间要求,会使定时任务执行,可能对测试造成干扰,可以使用Mock禁止定时任务。

以下以使用Mock禁止Spring定时任务为例,若使用其他的定时任务框架,也可以参考。

Spring定时任务的初始化在ScheduledTaskRegistrar.scheduleTasks()方法中完成,在该方法中会分别完成triggerTasks、cronTasks、fixedRateTasks、fixedDelayTasks等定时任务的初始化。

使用Mock禁止Spring定时任务,需要使用@PrepareForTest注解指定ScheduledTaskRegistrar类,在@BeforeClass注解对应的方法中禁止ScheduledTaskRegistrar.scheduleTasks()方法,如下所示:

@PrepareForTest({ScheduledTaskRegistrar.class})

@BeforeClass
public static void beforeClass() {
    PowerMockito.suppress(PowerMockito.method(ScheduledTaskRegistrar.class, "scheduleTasks"));
}

可参考示例TestSpringTaskEnabled类,若不禁止Spring定时任务,在单元测试执行期间会执行Spring定时任务。

可参考示例TestSpringTaskDisabled类,使用以上方法禁止Spring定时任务后,在单元测试执行期间不会执行Spring定时任务。

Error in testFeatureDozeTimeout_suspend_postsDelayedRunnable(com.huanglong.imstandbyservice.ImStandbyServiceTest):java.lang.NullPointerException: Attempt to invoke interface method 'boolean org.mockito.plugins.MockMaker$TypeMockability.mockable()' on a null object reference at org.mockito.internal.util.MockCreationValidator.validateType(MockCreationValidator.java:23) at org.mockito.internal.creation.MockSettingsImpl.validatedSettings(MockSettingsImpl.java:238) at org.mockito.internal.creation.MockSettingsImpl.build(MockSettingsImpl.java:226) at org.mockito.internal.MockitoCore.mock(MockitoCore.java:68) at org.mockito.Mockito.mock(Mockito.java:1905) at org.mockito.internal.configuration.MockAnnotationProcessor.processAnnotationForMock(MockAnnotationProcessor.java:41) at org.mockito.internal.configuration.MockAnnotationProcessor.process(MockAnnotationProcessor.java:19) at org.mockito.internal.configuration.MockAnnotationProcessor.process(MockAnnotationProcessor.java:16) at org.mockito.internal.configuration.IndependentAnnotationEngine.createMockFor(IndependentAnnotationEngine.java:38) at org.mockito.internal.configuration.IndependentAnnotationEngine.process(IndependentAnnotationEngine.java:62) at org.mockito.internal.configuration.InjectingAnnotationEngine.processIndependentAnnotations(InjectingAnnotationEngine.java:57) at org.mockito.internal.configuration.InjectingAnnotationEngine.process(InjectingAnnotationEngine.java:41) at org.mockito.MockitoAnnotations.initMocks(MockitoAnnotations.java:69) at com.huanglong.imstandbyservice.ImStandbyServiceTest.setUp(ImStandbyServiceTest.java:158)
最新发布
07-31
D:\application\JDK\bin\java.exe -ea -Djacoco-agent.destfile=D:\workspace\CCC00910_MspAI_GCH\target/jacoco.exec -Didea.test.cyclic.buffer.size=1048576 -javaagent:C:\Users\itw00668\AppData\Roaming\JetBrains\IdeaIC2024.2\plugins\mysql-log-plugin\lib\mysql-log-agent-1.1.jar -Dmysql-log.projectId=9bad6d48 "-javaagent:D:\application\Idea\Idea2024\IntelliJ IDEA Community Edition 2024.2.3\lib\idea_rt.jar=59700:D:\application\Idea\Idea2024\IntelliJ IDEA Community Edition 2024.2.3\bin" -Dfile.encoding=UTF-8 -classpath "C:\Users\itw00668\.m2\repository\org\junit\platform\junit-platform-launcher\1.8.2\junit-platform-launcher-1.8.2.jar;C:\Users\itw00668\.m2\repository\org\junit\platform\junit-platform-engine\1.8.2\junit-platform-engine-1.8.2.jar;C:\Users\itw00668\.m2\repository\org\opentest4j\opentest4j\1.2.0\opentest4j-1.2.0.jar;C:\Users\itw00668\.m2\repository\org\junit\platform\junit-platform-commons\1.8.2\junit-platform-commons-1.8.2.jar;C:\Users\itw00668\.m2\repository\org\apiguardian\apiguardian-api\1.1.2\apiguardian-api-1.1.2.jar;D:\application\Idea\Idea2024\IntelliJ IDEA Community Edition 2024.2.3\lib\idea_rt.jar;D:\application\Idea\Idea2024\IntelliJ IDEA Community Edition 2024.2.3\plugins\junit\lib\junit5-rt.jar;D:\application\Idea\Idea2024\IntelliJ IDEA Community Edition 2024.2.3\plugins\junit\lib\junit-rt.jar;D:\application\JDK\jre\lib\charsets.jar;D:\application\JDK\jre\lib\deploy.jar;D:\application\JDK\jre\lib\ext\access-bridge-64.jar;D:\application\JDK\jre\lib\ext\cldrdata.jar;D:\application\JDK\jre\lib\ext\dnsns.jar;D:\application\JDK\jre\lib\ext\jaccess.jar;D:\application\JDK\jre\lib\ext\jfxrt.jar;D:\application\JDK\jre\lib\ext\localedata.jar;D:\application\JDK\jre\lib\ext\nashorn.jar;D:\application\JDK\jre\lib\ext\sunec.jar;D:\application\JDK\jre\lib\ext\sunjce_provider.jar;D:\application\JDK\jre\lib\ext\sunmscapi.jar;D:\application\JDK\jre\lib\ext\sunpkcs11.jar;D:\application\JDK\jre\lib\ext\zipfs.jar;D:\application\JDK\jre\lib\javaws.jar;D:\application\JDK\jre\lib\jce.jar;D:\application\JDK\jre\lib\jfr.jar;D:\application\JDK\jre\lib\jfxswt.jar;D:\application\JDK\jre\lib\jsse.jar;D:\application\JDK\jre\lib\management-agent.jar;D:\application\JDK\jre\lib\plugin.jar;D:\application\JDK\jre\lib\resources.jar;D:\application\JDK\jre\lib\rt.jar;D:\workspace\CCC00910_MspAI_GCH\target\test-classes;D:\workspace\CCC00910_MspAI_GCH\target\classes;D:\application\Maven\repository\ZA21\bee-starter-logging\5.10.21\bee-starter-logging-5.10.21.jar;D:\application\Maven\repository\ZA21\bee-commons\5.10.21\bee-commons-5.10.21.jar;D:\application\Maven\repository\com\fasterxml\jackson\core\jackson-databind\2.13.3\jackson-databind-2.13.3.jar;D:\application\Maven\repository\com\fasterxml\jackson\core\jackson-annotations\2.13.3\jackson-annotations-2.13.3.jar;D:\application\Maven\repository\com\fasterxml\jackson\core\jackson-core\2.13.3\jackson-core-2.13.3.jar;D:\application\Maven\repository\javax\validation\validation-api\2.0.1.Final\validation-api-2.0.1.Final.jar;D:\application\Maven\repository\ZA21\bee-statement\5.10.21\bee-statement-5.10.21.jar;D:\application\Maven\repository\ZA21\bee-encryption\1.0.0\bee-encryption-1.0.0.jar;D:\application\Maven\repository\org\springframework\boot\spring-boot-starter-log4j2\2.7.2\spring-boot-starter-log4j2-2.7.2.jar;D:\application\Maven\repository\org\apache\logging\log4j\log4j-slf4j-impl\2.17.2\log4j-slf4j-impl-2.17.2.jar;D:\application\Maven\repository\org\apache\logging\log4j\log4j-api\2.17.2\log4j-api-2.17.2.jar;D:\application\Maven\repository\org\apache\logging\log4j\log4j-core\2.17.2\log4j-core-2.17.2.jar;D:\application\Maven\repository\org\apache\logging\log4j\log4j-jul\2.17.2\log4j-jul-2.17.2.jar;D:\application\Maven\repository\org\slf4j\jul-to-slf4j\1.7.36\jul-to-slf4j-1.7.36.jar;D:\application\Maven\repository\org\springframework\boot\spring-boot-configuration-processor\2.7.2\spring-boot-configuration-processor-2.7.2.jar;D:\application\Maven\repository\com\auth0\java-jwt\3.18.2\java-jwt-3.18.2.jar;D:\application\Maven\repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.13.3\jackson-datatype-jsr310-2.13.3.jar;D:\application\Maven\repository\org\springframework\boot\spring-boot-starter\2.7.2\spring-boot-starter-2.7.2.jar;D:\application\Maven\repository\org\springframework\boot\spring-boot\2.7.2\spring-boot-2.7.2.jar;D:\application\Maven\repository\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;D:\application\Maven\repository\org\yaml\snakeyaml\2.0\snakeyaml-2.0.jar;D:\application\Maven\repository\LT32\logsdk\2.5.5\logsdk-2.5.5.jar;D:\application\Maven\repository\org\springframework\spring-web\5.3.22\spring-web-5.3.22.jar;D:\application\Maven\repository\org\springframework\spring-beans\5.3.22\spring-beans-5.3.22.jar;D:\application\Maven\repository\io\opentracing\opentracing-api\0.33.0\opentracing-api-0.33.0.jar;D:\application\Maven\repository\io\opentracing\contrib\opentracing-spring-web\4.1.0\opentracing-spring-web-4.1.0.jar;D:\application\Maven\repository\io\opentracing\contrib\opentracing-web-servlet-filter\0.4.0\opentracing-web-servlet-filter-0.4.0.jar;D:\application\Maven\repository\io\opentracing\opentracing-util\0.33.0\opentracing-util-0.33.0.jar;D:\application\Maven\repository\io\opentracing\opentracing-noop\0.33.0\opentracing-noop-0.33.0.jar;D:\application\Maven\repository\io\jaegertracing\jaeger-client\1.8.1\jaeger-client-1.8.1.jar;D:\application\Maven\repository\io\jaegertracing\jaeger-core\1.8.1\jaeger-core-1.8.1.jar;D:\application\Maven\repository\io\jaegertracing\jaeger-tracerresolver\1.8.1\jaeger-tracerresolver-1.8.1.jar;D:\application\Maven\repository\io\opentracing\contrib\opentracing-tracerresolver\0.1.8\opentracing-tracerresolver-0.1.8.jar;D:\application\Maven\repository\org\aspectj\aspectjweaver\1.9.7\aspectjweaver-1.9.7.jar;D:\application\Maven\repository\ZA21\bee-starter-tracer\5.10.21\bee-starter-tracer-5.10.21.jar;D:\application\Maven\repository\LT31\09\unique-sql-hashid\9.0.0\unique-sql-hashid-9.0.0.jar;D:\application\Maven\repository\org\apache\commons\commons-lang3\3.12.0\commons-lang3-3.12.0.jar;D:\application\Maven\repository\LT31\09\shindata-druid\1.1.15\shindata-druid-1.1.15.jar;D:\application\Maven\repository\commons-io\commons-io\2.11.0\commons-io-2.11.0.jar;D:\application\Maven\repository\ZA21\bee-starter-management\5.10.21\bee-starter-management-5.10.21.jar;D:\application\Maven\repository\org\springframework\boot\spring-boot-actuator-autoconfigure\2.7.2\spring-boot-actuator-autoconfigure-2.7.2.jar;D:\application\Maven\repository\org\springframework\boot\spring-boot-actuator\2.7.2\spring-boot-actuator-2.7.2.jar;D:\application\Maven\repository\ZA21\bee-starter-metrics\5.10.21\bee-starter-metrics-5.10.21.jar;D:\application\Maven\repository\io\opentelemetry\opentelemetry-api-metrics\1.9.1-alpha\opentelemetry-api-metrics-1.9.1-alpha.jar;D:\application\Maven\repository\io\opentelemetry\opentelemetry-api\1.9.1\opentelemetry-api-1.9.1.jar;D:\application\Maven\repository\io\opentelemetry\opentelemetry-context\1.9.1\opentelemetry-context-1.9.1.jar;D:\application\Maven\repository\com\google\code\findbugs\jsr305\3.0.2\jsr305-3.0.2.jar;D:\application\Maven\repository\org\springframework\boot\spring-boot-starter-web\2.7.2\spring-boot-starter-web-2.7.2.jar;D:\application\Maven\repository\org\springframework\boot\spring-boot-starter-json\2.7.2\spring-boot-starter-json-2.7.2.jar;D:\application\Maven\repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.13.3\jackson-datatype-jdk8-2.13.3.jar;D:\application\Maven\repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.13.3\jackson-module-parameter-names-2.13.3.jar;D:\application\Maven\repository\org\springframework\spring-webmvc\5.3.22\spring-webmvc-5.3.22.jar;D:\application\Maven\repository\org\springframework\spring-aop\5.3.22\spring-aop-5.3.22.jar;D:\application\Maven\repository\org\springframework\spring-context\5.3.22\spring-context-5.3.22.jar;D:\application\Maven\repository\org\springframework\spring-expression\5.3.22\spring-expression-5.3.22.jar;D:\application\Maven\repository\com\cvicse\embedded\spring-boot-starter-inforsuite\10.0.2.5-CMB01\spring-boot-starter-inforsuite-10.0.2.5-CMB01.jar;D:\application\Maven\repository\org\springframework\cloud\spring-cloud-starter-openfeign\3.1.1\spring-cloud-starter-openfeign-3.1.1.jar;D:\application\Maven\repository\org\springframework\cloud\spring-cloud-starter\3.1.1\spring-cloud-starter-3.1.1.jar;D:\application\Maven\repository\org\springframework\cloud\spring-cloud-context\3.1.1\spring-cloud-context-3.1.1.jar;D:\application\Maven\repository\org\springframework\security\spring-security-rsa\1.0.10.RELEASE\spring-security-rsa-1.0.10.RELEASE.jar;D:\application\Maven\repository\org\springframework\cloud\spring-cloud-openfeign-core\3.1.1\spring-cloud-openfeign-core-3.1.1.jar;D:\application\Maven\repository\org\springframework\boot\spring-boot-starter-aop\2.7.2\spring-boot-starter-aop-2.7.2.jar;D:\application\Maven\repository\io\github\openfeign\form\feign-form-spring\3.8.0\feign-form-spring-3.8.0.jar;D:\application\Maven\repository\io\github\openfeign\form\feign-form\3.8.0\feign-form-3.8.0.jar;D:\application\Maven\repository\commons-fileupload\commons-fileupload\1.4\commons-fileupload-1.4.jar;D:\application\Maven\repository\org\springframework\cloud\spring-cloud-commons\3.1.1\spring-cloud-commons-3.1.1.jar;D:\application\Maven\repository\org\springframework\security\spring-security-crypto\5.7.2\spring-security-crypto-5.7.2.jar;D:\application\Maven\repository\io\github\openfeign\feign-core\11.8\feign-core-11.8.jar;D:\application\Maven\repository\io\github\openfeign\feign-slf4j\11.8\feign-slf4j-11.8.jar;D:\application\Maven\repository\org\springframework\boot\spring-boot-starter-webflux\2.7.2\spring-boot-starter-webflux-2.7.2.jar;D:\application\Maven\repository\org\springframework\boot\spring-boot-starter-reactor-netty\2.7.2\spring-boot-starter-reactor-netty-2.7.2.jar;D:\application\Maven\repository\io\projectreactor\netty\reactor-netty-http\1.0.21\reactor-netty-http-1.0.21.jar;D:\application\Maven\repository\io\netty\netty-codec-http\4.1.79.Final\netty-codec-http-4.1.79.Final.jar;D:\application\Maven\repository\io\netty\netty-common\4.1.79.Final\netty-common-4.1.79.Final.jar;D:\application\Maven\repository\io\netty\netty-buffer\4.1.79.Final\netty-buffer-4.1.79.Final.jar;D:\application\Maven\repository\io\netty\netty-transport\4.1.79.Final\netty-transport-4.1.79.Final.jar;D:\application\Maven\repository\io\netty\netty-codec\4.1.79.Final\netty-codec-4.1.79.Final.jar;D:\application\Maven\repository\io\netty\netty-handler\4.1.79.Final\netty-handler-4.1.79.Final.jar;D:\application\Maven\repository\io\netty\netty-codec-http2\4.1.79.Final\netty-codec-http2-4.1.79.Final.jar;D:\application\Maven\repository\io\netty\netty-resolver-dns\4.1.79.Final\netty-resolver-dns-4.1.79.Final.jar;D:\application\Maven\repository\io\netty\netty-resolver\4.1.79.Final\netty-resolver-4.1.79.Final.jar;D:\application\Maven\repository\io\netty\netty-codec-dns\4.1.79.Final\netty-codec-dns-4.1.79.Final.jar;D:\application\Maven\repository\io\netty\netty-resolver-dns-native-macos\4.1.79.Final\netty-resolver-dns-native-macos-4.1.79.Final-osx-x86_64.jar;D:\application\Maven\repository\io\netty\netty-resolver-dns-classes-macos\4.1.79.Final\netty-resolver-dns-classes-macos-4.1.79.Final.jar;D:\application\Maven\repository\io\netty\netty-transport-native-epoll\4.1.79.Final\netty-transport-native-epoll-4.1.79.Final-linux-x86_64.jar;D:\application\Maven\repository\io\netty\netty-transport-native-unix-common\4.1.79.Final\netty-transport-native-unix-common-4.1.79.Final.jar;D:\application\Maven\repository\io\netty\netty-transport-classes-epoll\4.1.79.Final\netty-transport-classes-epoll-4.1.79.Final.jar;D:\application\Maven\repository\io\projectreactor\netty\reactor-netty-core\1.0.21\reactor-netty-core-1.0.21.jar;D:\application\Maven\repository\io\netty\netty-handler-proxy\4.1.79.Final\netty-handler-proxy-4.1.79.Final.jar;D:\application\Maven\repository\io\netty\netty-codec-socks\4.1.79.Final\netty-codec-socks-4.1.79.Final.jar;D:\application\Maven\repository\org\springframework\spring-webflux\5.3.22\spring-webflux-5.3.22.jar;D:\application\Maven\repository\io\projectreactor\reactor-core\3.4.21\reactor-core-3.4.21.jar;D:\application\Maven\repository\org\reactivestreams\reactive-streams\1.0.4\reactive-streams-1.0.4.jar;D:\application\Maven\repository\ZA21\bee-starter-web\5.10.21\bee-starter-web-5.10.21.jar;D:\application\Maven\repository\ZA21\bee-starter-healthcheck\5.10.21\bee-starter-healthcheck-5.10.21.jar;D:\application\Maven\repository\org\springframework\boot\spring-boot-starter-validation\2.7.2\spring-boot-starter-validation-2.7.2.jar;D:\application\Maven\repository\org\apache\tomcat\embed\tomcat-embed-el\9.0.82\tomcat-embed-el-9.0.82.jar;D:\application\Maven\repository\org\hibernate\validator\hibernate-validator\6.2.3.Final\hibernate-validator-6.2.3.Final.jar;D:\application\Maven\repository\jakarta\validation\jakarta.validation-api\2.0.2\jakarta.validation-api-2.0.2.jar;D:\application\Maven\repository\org\jboss\logging\jboss-logging\3.3.2.Final\jboss-logging-3.3.2.Final.jar;D:\application\Maven\repository\com\fasterxml\classmate\1.5.1\classmate-1.5.1.jar;D:\application\Maven\repository\H0010038\04\config-client-integration-springboot\1.0.0-SNAPSHOT\config-client-integration-springboot-1.0.0-20250626.033408-18.jar;D:\application\Maven\repository\H0010038\04\config-client\1.0.0-SNAPSHOT\config-client-1.0.0-20250626.033408-19.jar;D:\application\Maven\repository\H0010038\04\infra-utils-spi\1.1.0-SNAPSHOT\infra-utils-spi-1.1.0-20240301.071119-6.jar;D:\application\Maven\repository\H0010038\04\config-client-grpc\1.0.0-SNAPSHOT\config-client-grpc-1.0.0-20250626.033408-19.jar;D:\application\Maven\repository\H0010038\04\grpc-client-notify\1.0.0-SNAPSHOT\grpc-client-notify-1.0.0-20250609.084419-19.jar;D:\application\Maven\repository\H0010038\04\grpc-client-lib\1.0.0-SNAPSHOT\grpc-client-lib-1.0.0-20250609.084419-19.jar;D:\application\Maven\repository\com\google\protobuf\protobuf-java\3.19.4\protobuf-java-3.19.4.jar;D:\application\Maven\repository\io\grpc\grpc-protobuf\1.51.0\grpc-protobuf-1.51.0.jar;D:\application\Maven\repository\com\google\api\grpc\proto-google-common-protos\2.9.0\proto-google-common-protos-2.9.0.jar;D:\application\Maven\repository\io\grpc\grpc-protobuf-lite\1.51.0\grpc-protobuf-lite-1.51.0.jar;D:\application\Maven\repository\com\google\guava\guava\20.0\guava-20.0.jar;D:\application\Maven\repository\io\grpc\grpc-stub\1.51.0\grpc-stub-1.51.0.jar;D:\application\Maven\repository\io\grpc\grpc-netty-shaded\1.30.2\grpc-netty-shaded-1.30.2.jar;D:\application\Maven\repository\io\grpc\grpc-core\1.30.2\grpc-core-1.30.2.jar;D:\application\Maven\repository\io\grpc\grpc-api\1.30.2\grpc-api-1.30.2.jar;D:\application\Maven\repository\com\google\android\annotations\4.1.1.4\annotations-4.1.1.4.jar;D:\application\Maven\repository\org\codehaus\mojo\animal-sniffer-annotations\1.18\animal-sniffer-annotations-1.18.jar;D:\application\Maven\repository\io\perfmark\perfmark-api\0.19.0\perfmark-api-0.19.0.jar;D:\application\Maven\repository\io\grpc\grpc-context\1.30.2\grpc-context-1.30.2.jar;D:\application\Maven\repository\H0010038\04\notifier-client\1.1.6-SNAPSHOT\notifier-client-1.1.6-20241011.023044-1.jar;D:\application\Maven\repository\org\apache\httpcomponents\httpmime\4.5.13\httpmime-4.5.13.jar;D:\application\Maven\repository\org\apache\curator\curator-recipes\5.1.0\curator-recipes-5.1.0.jar;D:\application\Maven\repository\org\apache\curator\curator-framework\5.1.0\curator-framework-5.1.0.jar;D:\application\Maven\repository\org\apache\curator\curator-client\5.1.0\curator-client-5.1.0.jar;D:\application\Maven\repository\org\apache\zookeeper\zookeeper\3.6.0\zookeeper-3.6.0.jar;D:\application\Maven\repository\commons-lang\commons-lang\2.6\commons-lang-2.6.jar;D:\application\Maven\repository\org\apache\zookeeper\zookeeper-jute\3.6.0\zookeeper-jute-3.6.0.jar;D:\application\Maven\repository\org\apache\yetus\audience-annotations\0.5.0\audience-annotations-0.5.0.jar;D:\application\Maven\repository\io\netty\netty-transport-native-epoll\4.1.79.Final\netty-transport-native-epoll-4.1.79.Final.jar;D:\application\Maven\repository\commons-codec\commons-codec\1.15\commons-codec-1.15.jar;D:\application\Maven\repository\com\google\code\gson\gson\2.9.0\gson-2.9.0.jar;D:\application\Maven\repository\ZA21\bee-starter-persistence\5.10.21\bee-starter-persistence-5.10.21.jar;D:\application\Maven\repository\org\mybatis\spring\boot\mybatis-spring-boot-starter\2.2.2\mybatis-spring-boot-starter-2.2.2.jar;D:\application\Maven\repository\org\springframework\boot\spring-boot-starter-jdbc\2.7.2\spring-boot-starter-jdbc-2.7.2.jar;D:\application\Maven\repository\org\springframework\spring-jdbc\5.3.22\spring-jdbc-5.3.22.jar;D:\application\Maven\repository\org\mybatis\spring\boot\mybatis-spring-boot-autoconfigure\2.2.2\mybatis-spring-boot-autoconfigure-2.2.2.jar;D:\application\Maven\repository\org\mybatis\mybatis\3.5.9\mybatis-3.5.9.jar;D:\application\Maven\repository\org\mybatis\mybatis-spring\2.0.7\mybatis-spring-2.0.7.jar;D:\application\Maven\repository\org\springframework\boot\spring-boot-autoconfigure\2.7.2\spring-boot-autoconfigure-2.7.2.jar;D:\application\Maven\repository\org\apache\tomcat\tomcat-jdbc\9.0.82\tomcat-jdbc-9.0.82.jar;D:\application\Maven\repository\org\apache\tomcat\tomcat-juli\9.0.82\tomcat-juli-9.0.82.jar;D:\application\Maven\repository\LT99\09\tdsql-mysql-connector-java8\1.5.0\tdsql-mysql-connector-java8-1.5.0.jar;D:\application\Maven\repository\ZA21\bee-starter-redis\5.10.21\bee-starter-redis-5.10.21.jar;D:\application\Maven\repository\org\springframework\boot\spring-boot-starter-data-redis\2.7.2\spring-boot-starter-data-redis-2.7.2.jar;D:\application\Maven\repository\org\springframework\data\spring-data-redis\2.7.2\spring-data-redis-2.7.2.jar;D:\application\Maven\repository\org\springframework\data\spring-data-keyvalue\2.7.2\spring-data-keyvalue-2.7.2.jar;D:\application\Maven\repository\org\springframework\data\spring-data-commons\2.7.2\spring-data-commons-2.7.2.jar;D:\application\Maven\repository\org\springframework\spring-tx\5.3.22\spring-tx-5.3.22.jar;D:\application\Maven\repository\org\springframework\spring-oxm\5.3.22\spring-oxm-5.3.22.jar;D:\application\Maven\repository\org\springframework\spring-context-support\5.3.22\spring-context-support-5.3.22.jar;D:\application\Maven\repository\redis\clients\jedis\3.10.0\jedis-3.10.0.jar;D:\application\Maven\repository\org\apache\commons\commons-pool2\2.11.1\commons-pool2-2.11.1.jar;D:\application\Maven\repository\org\projectlombok\lombok\1.18.24\lombok-1.18.24.jar;D:\application\Maven\repository\org\apache\commons\commons-collections4\4.4\commons-collections4-4.4.jar;D:\application\Maven\repository\org\apache\commons\commons-csv\1.10.0\commons-csv-1.10.0.jar;D:\application\Maven\repository\com\alibaba\transmittable-thread-local\2.11.4\transmittable-thread-local-2.11.4.jar;D:\application\Maven\repository\com\github\ben-manes\caffeine\caffeine\2.8.5\caffeine-2.8.5.jar;D:\application\Maven\repository\org\checkerframework\checker-qual\3.4.1\checker-qual-3.4.1.jar;D:\application\Maven\repository\com\google\errorprone\error_prone_annotations\2.4.0\error_prone_annotations-2.4.0.jar;D:\application\Maven\repository\org\apache\httpcomponents\httpclient\4.5.13\httpclient-4.5.13.jar;D:\application\Maven\repository\org\apache\httpcomponents\httpcore\4.4.15\httpcore-4.4.15.jar;D:\application\Maven\repository\commons-logging\commons-logging\1.2\commons-logging-1.2.jar;D:\application\Maven\repository\H0010038\04\ccc-metric-dependency\1.0.9-SNAPSHOT\ccc-metric-dependency-1.0.9-20250220.060300-3.jar;D:\application\Maven\repository\org\slf4j\slf4j-api\1.7.36\slf4j-api-1.7.36.jar;D:\application\Maven\repository\H0010038\04\security-protocol\1.2.0-SNAPSHOT\security-protocol-1.2.0-20250311.063350-1.jar;D:\application\Maven\repository\H0010038\04\security-gct\1.2.0-RELEASE\security-gct-1.2.0-RELEASE.jar;D:\application\Maven\repository\org\bouncycastle\bcprov-jdk15on\1.60\bcprov-jdk15on-1.60.jar;D:\application\Maven\repository\org\bouncycastle\bcpkix-jdk15on\1.60\bcpkix-jdk15on-1.60.jar;D:\application\Maven\repository\ZA33\PCJava\1.17.20220616\PCJava-1.17.20220616.jar;D:\application\Maven\repository\com\payneteasy\ber-tlv\1.0-11\ber-tlv-1.0-11.jar;D:\application\Maven\repository\com\github\jnr\jnr-ffi\2.0.9\jnr-ffi-2.0.9.jar;D:\application\Maven\repository\com\github\jnr\jffi\1.2.11\jffi-1.2.11.jar;D:\application\Maven\repository\com\github\jnr\jffi\1.2.11\jffi-1.2.11-native.jar;D:\application\Maven\repository\org\ow2\asm\asm\5.0.3\asm-5.0.3.jar;D:\application\Maven\repository\org\ow2\asm\asm-commons\5.0.3\asm-commons-5.0.3.jar;D:\application\Maven\repository\org\ow2\asm\asm-analysis\5.0.3\asm-analysis-5.0.3.jar;D:\application\Maven\repository\org\ow2\asm\asm-tree\5.0.3\asm-tree-5.0.3.jar;D:\application\Maven\repository\org\ow2\asm\asm-util\5.0.3\asm-util-5.0.3.jar;D:\application\Maven\repository\com\github\jnr\jnr-x86asm\1.0.2\jnr-x86asm-1.0.2.jar;D:\application\Maven\repository\org\springframework\boot\spring-boot-starter-test\2.7.2\spring-boot-starter-test-2.7.2.jar;D:\application\Maven\repository\org\springframework\boot\spring-boot-test\2.7.2\spring-boot-test-2.7.2.jar;D:\application\Maven\repository\org\springframework\boot\spring-boot-test-autoconfigure\2.7.2\spring-boot-test-autoconfigure-2.7.2.jar;D:\application\Maven\repository\com\jayway\jsonpath\json-path\2.7.0\json-path-2.7.0.jar;D:\application\Maven\repository\net\minidev\json-smart\2.4.8\json-smart-2.4.8.jar;D:\application\Maven\repository\net\minidev\accessors-smart\2.4.8\accessors-smart-2.4.8.jar;D:\application\Maven\repository\jakarta\xml\bind\jakarta.xml.bind-api\2.3.3\jakarta.xml.bind-api-2.3.3.jar;D:\application\Maven\repository\jakarta\activation\jakarta.activation-api\1.2.2\jakarta.activation-api-1.2.2.jar;D:\application\Maven\repository\org\assertj\assertj-core\3.22.0\assertj-core-3.22.0.jar;D:\application\Maven\repository\org\hamcrest\hamcrest\2.2\hamcrest-2.2.jar;D:\application\Maven\repository\org\junit\jupiter\junit-jupiter\5.8.2\junit-jupiter-5.8.2.jar;D:\application\Maven\repository\org\junit\jupiter\junit-jupiter-api\5.8.2\junit-jupiter-api-5.8.2.jar;D:\application\Maven\repository\org\junit\jupiter\junit-jupiter-params\5.8.2\junit-jupiter-params-5.8.2.jar;D:\application\Maven\repository\org\junit\jupiter\junit-jupiter-engine\5.8.2\junit-jupiter-engine-5.8.2.jar;D:\application\Maven\repository\org\mockito\mockito-junit-jupiter\4.5.1\mockito-junit-jupiter-4.5.1.jar;D:\application\Maven\repository\org\skyscreamer\jsonassert\1.5.1\jsonassert-1.5.1.jar;D:\application\Maven\repository\com\vaadin\external\google\android-json\0.0.20131108.vaadin1\android-json-0.0.20131108.vaadin1.jar;D:\application\Maven\repository\org\springframework\spring-core\5.3.22\spring-core-5.3.22.jar;D:\application\Maven\repository\org\springframework\spring-jcl\5.3.22\spring-jcl-5.3.22.jar;D:\application\Maven\repository\org\springframework\spring-test\5.3.22\spring-test-5.3.22.jar;D:\application\Maven\repository\org\xmlunit\xmlunit-core\2.9.0\xmlunit-core-2.9.0.jar;D:\application\Maven\repository\org\junit\vintage\junit-vintage-engine\5.8.2\junit-vintage-engine-5.8.2.jar;D:\application\Maven\repository\org\junit\platform\junit-platform-engine\1.8.2\junit-platform-engine-1.8.2.jar;D:\application\Maven\repository\org\opentest4j\opentest4j\1.2.0\opentest4j-1.2.0.jar;D:\application\Maven\repository\org\junit\platform\junit-platform-commons\1.8.2\junit-platform-commons-1.8.2.jar;D:\application\Maven\repository\org\apiguardian\apiguardian-api\1.1.2\apiguardian-api-1.1.2.jar;D:\application\Maven\repository\junit\junit\4.13.2\junit-4.13.2.jar;D:\application\Maven\repository\org\hamcrest\hamcrest-core\2.2\hamcrest-core-2.2.jar;D:\application\Maven\repository\org\mockito\mockito-core\2.23.4\mockito-core-2.23.4.jar;D:\application\Maven\repository\net\bytebuddy\byte-buddy\1.12.12\byte-buddy-1.12.12.jar;D:\application\Maven\repository\net\bytebuddy\byte-buddy-agent\1.12.12\byte-buddy-agent-1.12.12.jar;D:\application\Maven\repository\org\objenesis\objenesis\2.6\objenesis-2.6.jar;D:\application\Maven\repository\org\powermock\powermock-core\2.0.2\powermock-core-2.0.2.jar;D:\application\Maven\repository\org\powermock\powermock-reflect\2.0.2\powermock-reflect-2.0.2.jar;D:\application\Maven\repository\org\javassist\javassist\3.24.0-GA\javassist-3.24.0-GA.jar;D:\application\Maven\repository\org\powermock\powermock-api-mockito2\2.0.2\powermock-api-mockito2-2.0.2.jar;D:\application\Maven\repository\org\powermock\powermock-api-support\2.0.2\powermock-api-support-2.0.2.jar;D:\application\Maven\repository\org\powermock\powermock-module-junit4\2.0.2\powermock-module-junit4-2.0.2.jar;D:\application\Maven\repository\org\powermock\powermock-module-junit4-common\2.0.2\powermock-module-junit4-common-2.0.2.jar;D:\application\Maven\repository\org\jacoco\org.jacoco.agent\0.8.4\org.jacoco.agent-0.8.4-runtime.jar" com.intellij.rt.junit.JUnitStarter -ideVersion5 -junit5 com.cmbchina.ccc.msp.mspai.service.DbLogServiceImplTest,shouldLogAndInsertAdapterLog_whenGivenValidLogAdapterPo java.lang.NoSuchMethodError: org.mockito.internal.configuration.plugins.Plugins.getMockitoLogger()Lorg/mockito/plugins/MockitoLogger; at org.mockito.junit.jupiter.MockitoExtension.beforeEach(MockitoExtension.java:152) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeEachCallbacks$2(TestMethodTestDescriptor.java:163) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeMethodsOrCallbacksUntilExceptionOccurs$6(TestMethodTestDescriptor.java:199) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeMethodsOrCallbacksUntilExceptionOccurs(TestMethodTestDescriptor.java:199) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeEachCallbacks(TestMethodTestDescriptor.java:162) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:129) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:66) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) at java.util.ArrayList.forEach(ArrayList.java:1257) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) at java.util.ArrayList.forEach(ArrayList.java:1257) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35) at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52) at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114) at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86) at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86) at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53) at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:57) at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38) at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:232) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55) Suppressed: java.lang.NullPointerException at org.mockito.junit.jupiter.MockitoExtension.afterEach(MockitoExtension.java:184) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeAfterEachCallbacks$12(TestMethodTestDescriptor.java:257) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeAllAfterMethodsOrCallbacks$13(TestMethodTestDescriptor.java:273) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeAllAfterMethodsOrCallbacks$14(TestMethodTestDescriptor.java:273) at java.util.ArrayList.forEach(ArrayList.java:1257) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeAllAfterMethodsOrCallbacks(TestMethodTestDescriptor.java:272) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeAfterEachCallbacks(TestMethodTestDescriptor.java:256) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:141) ... 47 more Process finished with exit code -1
07-08
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值