我有一個類需要測驗:
public class TestClazz {
public void abc() {
List<String> sa = Collections.singletonList("sa");
Stream<PropertySource<?>> stream = StreamSupport.stream(Mockito.mock(Spliterator.class), false);
ICampaignHandler campaignHandler = CampaignHandlerFactory.getCampaignHandler(ProcessorTypeEnum.RETRY_CAMPAIGN);
System.out.println("============INSIDE ABC===========");
System.out.println(sa);
System.out.println(stream);
System.out.println(campaignHandler);
//Other logic code
}
}
和一個測驗類:
@RunWith(PowerMockRunner.class)
@PrepareForTest({ Collections.class, StreamSupport.class, CampaignHandlerFactory.class})
public class DefaultSystemAppConfigServiceTest {
@Test
public void testing() {
PowerMockito.mockStatic(StreamSupport.class);
PowerMockito.mockStatic(Collections.class);
PowerMockito.mockStatic(CampaignHandlerFactory.class);
//Stubbing
Mockito.when(StreamSupport.stream(Mockito.any(Spliterator.class), Mockito.anyBoolean()))
.thenReturn(Mockito.mock(Stream.class));
Mockito.when(Collections.singletonList(Mockito.any()))
.thenReturn(Mockito.mock(List.class));
Mockito.when(CampaignHandlerFactory.getCampaignHandler(Mockito.any()))
.thenReturn(Mockito.mock(ICampaignHandler.class));
//Here invoked method under test
new TestClazz().abc();
Stream<PropertySource<?>> stream = StreamSupport.stream(Mockito.mock(Spliterator.class), false);
List<String> sa = Collections.singletonList("sa");
ICampaignHandler campaignHandler = CampaignHandlerFactory.getCampaignHandler(ProcessorTypeEnum.RETRY_CAMPAIGN);
System.out.println();
System.out.println("============OUTSIDE ABC===========");
System.out.println(sa);
System.out.println(stream);
System.out.println(campaignHandler);
}
}
我必須模擬靜態呼叫,以便它按我的期望回傳
我按照以下步驟操作:
- @RunWith(PowerMockRunner.class)
- @PrepareForTest({ Collections.class, StreamSupport.class, CampaignHandlerFactory.class})
- PowerMockito.mockStatic(clazz)
- Mockito.when(方法呼叫).thenReturn(我的模擬)
- 呼叫方法需要測驗
結果:
============INSIDE ABC===========
[sa]
java.util.stream.ReferencePipeline$Head@dffa30b
Mock for ICampaignHandler, hashCode: 81269359
============OUTSIDE ABC===========
Mock for List, hashCode: 628164202
Mock for Stream, hashCode: 1962826086
Mock for ICampaignHandler, hashCode: 81269359
Process finished with exit code 0
如果靜態呼叫在 abc() 內部,你們可以看到 2/3 我的存根設定不起作用,如果我在 abc() 外部復制靜態呼叫(直接復制到 testing()),它就可以作業。只有 1/3 的存根作業(內部和外部):
CampaignHandlerFactory.getCampaignHandler(param) //this return as my expectiation
提示:CampaignHandlerFactory 是我的實作;Collections, StreamSupport 是內置類。這是春季啟動應用程式
測驗依賴樹:
mvn test dependency:tree -DskipTests=true
[INFO] --- maven-dependency-plugin:3.1.2:tree (default-cli) @ ota-service ---
[INFO] com.sirea.ota:ota-service:jar:0.0.1-SNAPSHOT
[INFO] - com.sirea.ota:ota-logging:jar:0.0.1-SNAPSHOT:compile
[INFO] | - org.slf4j:slf4j-api:jar:1.7.30:compile
[INFO] | - org.springframework.boot:spring-boot-starter-aop:jar:2.3.8.RELEASE:compile
[INFO] | | - org.springframework:spring-aop:jar:5.2.12.RELEASE:compile
[INFO] | | \- org.aspectj:aspectjweaver:jar:1.9.6:compile
[INFO] | - com.sirea:logFormattor:jar:1.0.9:compile
[INFO] | | \- org.codehaus.janino:janino:jar:3.1.2:compile
[INFO] | | \- org.codehaus.janino:commons-compiler:jar:3.1.2:compile
[INFO] | - org.springframework.boot:spring-boot-starter-web:jar:2.3.8.RELEASE:compile
[INFO] | | - org.springframework.boot:spring-boot-starter-json:jar:2.3.8.RELEASE:compile
[INFO] | | | - com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.11.4:compile
[INFO] | | | - com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.11.4:compile
[INFO] | | | \- com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.11.4:compile
[INFO] | | - org.springframework:spring-web:jar:5.2.12.RELEASE:compile
[INFO] | | \- org.springframework:spring-webmvc:jar:5.2.12.RELEASE:compile
[INFO] | | \- org.springframework:spring-expression:jar:5.2.12.RELEASE:compile
[INFO] | \- org.springframework.boot:spring-boot-starter-jetty:jar:2.3.8.RELEASE:compile
[INFO] | - jakarta.servlet:jakarta.servlet-api:jar:4.0.4:compile
[INFO] | - jakarta.websocket:jakarta.websocket-api:jar:1.1.2:compile
[INFO] | - org.eclipse.jetty:jetty-servlets:jar:9.4.35.v20201120:compile
[INFO] | | - org.eclipse.jetty:jetty-continuation:jar:9.4.35.v20201120:compile
[INFO] | | - org.eclipse.jetty:jetty-http:jar:9.4.35.v20201120:compile
[INFO] | | - org.eclipse.jetty:jetty-util:jar:9.4.35.v20201120:compile
[INFO] | | \- org.eclipse.jetty:jetty-io:jar:9.4.35.v20201120:compile
[INFO] | - org.eclipse.jetty:jetty-webapp:jar:9.4.35.v20201120:compile
[INFO] | | - org.eclipse.jetty:jetty-xml:jar:9.4.35.v20201120:compile
[INFO] | | \- org.eclipse.jetty:jetty-servlet:jar:9.4.35.v20201120:compile
[INFO] | | - org.eclipse.jetty:jetty-security:jar:9.4.35.v20201120:compile
[INFO] | | | \- org.eclipse.jetty:jetty-server:jar:9.4.35.v20201120:compile
[INFO] | | \- org.eclipse.jetty:jetty-util-ajax:jar:9.4.35.v20201120:compile
[INFO] | - org.eclipse.jetty.websocket:websocket-server:jar:9.4.35.v20201120:compile
[INFO] | | - org.eclipse.jetty.websocket:websocket-common:jar:9.4.35.v20201120:compile
[INFO] | | | \- org.eclipse.jetty.websocket:websocket-api:jar:9.4.35.v20201120:compile
[INFO] | | - org.eclipse.jetty.websocket:websocket-client:jar:9.4.35.v20201120:compile
[INFO] | | | \- org.eclipse.jetty:jetty-client:jar:9.4.35.v20201120:compile
[INFO] | | \- org.eclipse.jetty.websocket:websocket-servlet:jar:9.4.35.v20201120:compile
[INFO] | - org.eclipse.jetty.websocket:javax-websocket-server-impl:jar:9.4.35.v20201120:compile
[INFO] | | - org.eclipse.jetty:jetty-annotations:jar:9.4.35.v20201120:compile
[INFO] | | | - org.eclipse.jetty:jetty-plus:jar:9.4.35.v20201120:compile
[INFO] | | | - org.ow2.asm:asm:jar:9.0:compile
[INFO] | | | \- org.ow2.asm:asm-commons:jar:9.0:compile
[INFO] | | | - org.ow2.asm:asm-tree:jar:9.0:compile
[INFO] | | | \- org.ow2.asm:asm-analysis:jar:9.0:compile
[INFO] | | \- org.eclipse.jetty.websocket:javax-websocket-client-impl:jar:9.4.35.v20201120:compile
[INFO] | \- org.glassfish:jakarta.el:jar:3.0.3:compile
[INFO] - com.sirea.common:sirea-logging:jar:1.2.0:compile
[INFO] | - com.fasterxml.jackson.core:jackson-core:jar:2.11.4:compile
[INFO] | - com.fasterxml.jackson.core:jackson-annotations:jar:2.11.4:compile
[INFO] | - com.fasterxml.jackson.core:jackson-databind:jar:2.11.4:compile
[INFO] | \- ch.qos.logback:logback-classic:jar:1.2.3:compile
[INFO] | \- ch.qos.logback:logback-core:jar:1.2.3:compile
[INFO] - com.sirea.ota:ota-common:jar:0.0.1-SNAPSHOT:compile
[INFO] | - javax.validation:validation-api:jar:2.0.1.Final:compile
[INFO] | - org.springframework.hateoas:spring-hateoas:jar:1.2.3:compile
[INFO] | | - org.springframework:spring-beans:jar:5.2.12.RELEASE:compile
[INFO] | | - org.springframework:spring-context:jar:5.2.12.RELEASE:compile
[INFO] | | \- org.springframework.plugin:spring-plugin-core:jar:2.0.0.RELEASE:compile
[INFO] | - org.apache.commons:commons-lang3:jar:3.11:compile
[INFO] | - org.codehaus.jackson:jackson-mapper-asl:jar:1.9.13:compile
[INFO] | | \- org.codehaus.jackson:jackson-core-asl:jar:1.9.13:compile
[INFO] | - javax.xml.bind:jaxb-api:jar:2.3.1:compile
[INFO] | | \- javax.activation:javax.activation-api:jar:1.2.0:compile
[INFO] | - com.sirea.amp.partner.oemil:oemil-integration:jar:1.0.4-7:compile
[INFO] | | - com.nimbusds:nimbus-jose-jwt:jar:8.19:compile
[INFO] | | | \- com.github.stephenc.jcip:jcip-annotations:jar:1.0-1:compile
[INFO] | | \- com.sirea.amp:amp-schema:jar:0.0.2-SNAPSHOT:compile
[INFO] | | - com.google.protobuf:protobuf-java:jar:3.14.0:compile
[INFO] | | \- com.google.protobuf:protobuf-java-util:jar:3.14.0:compile
[INFO] | | \- com.google.code.gson:gson:jar:2.8.6:compile
[INFO] | - javax:javaee-api:jar:8.0.1:compile
[INFO] | | \- com.sun.mail:javax.mail:jar:1.6.2:compile
[INFO] | | \- javax.activation:activation:jar:1.1:compile
[INFO] | \- org.bouncycastle:bcpkix-jdk15on:jar:1.68:compile
[INFO] | \- org.bouncycastle:bcprov-jdk15on:jar:1.68:compile
[INFO] - com.sirea.ota:server-interface-api:jar:0.0.1-SNAPSHOT:compile
[INFO] - com.sirea.ota:ota-jpa:jar:0.0.1-SNAPSHOT:compile
[INFO] | - org.flywaydb:flyway-core:jar:6.5.7:compile
[INFO] | \- org.projectlombok:lombok:jar:1.18.16:compile
[INFO] - com.sirea.ota:ota-converter:jar:0.0.1-SNAPSHOT:compile
[INFO] | - com.bazaarvoice.jolt:jolt-core:jar:0.1.1:compile
[INFO] | | \- javax.inject:javax.inject:jar:1:compile
[INFO] | \- com.bazaarvoice.jolt:json-utils:jar:0.1.1:compile
[INFO] - com.sirea.ota:ota-rest-common:jar:0.0.1-SNAPSHOT:compile
[INFO] | - com.google.guava:guava:jar:30.1-jre:compile
[INFO] | | - com.google.guava:failureaccess:jar:1.0.1:compile
[INFO] | | - com.google.guava:listenablefuture:jar:9999.0-empty-to-avoid-conflict-with-guava:compile
[INFO] | | - com.google.code.findbugs:jsr305:jar:3.0.2:compile
[INFO] | | - org.checkerframework:checker-qual:jar:3.5.0:compile
[INFO] | | - com.google.errorprone:error_prone_annotations:jar:2.3.4:compile
[INFO] | | \- com.google.j2objc:j2objc-annotations:jar:1.3:compile
[INFO] | - org.springframework.data:spring-data-commons:jar:2.3.6.RELEASE:compile
[INFO] | - org.springframework.data:spring-data-redis:jar:2.3.6.RELEASE:compile
[INFO] | | - org.springframework.data:spring-data-keyvalue:jar:2.3.6.RELEASE:compile
[INFO] | | - org.springframework:spring-tx:jar:5.2.12.RELEASE:compile
[INFO] | | - org.springframework:spring-oxm:jar:5.2.12.RELEASE:compile
[INFO] | | \- org.springframework:spring-context-support:jar:5.2.12.RELEASE:compile
[INFO] | - io.lettuce:lettuce-core:jar:5.3.6.RELEASE:compile
[INFO] | | - io.netty:netty-common:jar:4.1.58.Final:compile
[INFO] | | - io.netty:netty-handler:jar:4.1.58.Final:compile
[INFO] | | | - io.netty:netty-resolver:jar:4.1.58.Final:compile
[INFO] | | | - io.netty:netty-buffer:jar:4.1.58.Final:compile
[INFO] | | | \- io.netty:netty-codec:jar:4.1.58.Final:compile
[INFO] | | - io.netty:netty-transport:jar:4.1.58.Final:compile
[INFO] | | \- io.projectreactor:reactor-core:jar:3.3.13.RELEASE:compile
[INFO] | | \- org.reactivestreams:reactive-streams:jar:1.0.3:compile
[INFO] | - org.apache.commons:commons-pool2:jar:2.8.1:compile
[INFO] | \- commons-io:commons-io:jar:2.8.0:compile
[INFO] - org.springframework.boot:spring-boot-starter-amqp:jar:2.3.8.RELEASE:compile
[INFO] | - org.springframework.boot:spring-boot-starter:jar:2.3.8.RELEASE:compile
[INFO] | | - org.springframework.boot:spring-boot:jar:2.3.8.RELEASE:compile
[INFO] | | - org.springframework.boot:spring-boot-autoconfigure:jar:2.3.8.RELEASE:compile
[INFO] | | - org.springframework.boot:spring-boot-starter-logging:jar:2.3.8.RELEASE:compile
[INFO] | | - jakarta.annotation:jakarta.annotation-api:jar:1.3.5:compile
[INFO] | | \- org.yaml:snakeyaml:jar:1.26:compile
[INFO] | - org.springframework:spring-messaging:jar:5.2.12.RELEASE:compile
[INFO] | \- org.springframework.amqp:spring-rabbit:jar:2.3.4:compile
[INFO] | - org.springframework.amqp:spring-amqp:jar:2.3.4:compile
[INFO] | \- com.rabbitmq:amqp-client:jar:5.9.0:compile
[INFO] - org.springframework.boot:spring-boot-starter-data-jpa:jar:2.3.8.RELEASE:compile
[INFO] | - org.springframework.boot:spring-boot-starter-jdbc:jar:2.3.8.RELEASE:compile
[INFO] | | - com.zaxxer:HikariCP:jar:3.4.5:compile
[INFO] | | \- org.springframework:spring-jdbc:jar:5.2.12.RELEASE:compile
[INFO] | - jakarta.transaction:jakarta.transaction-api:jar:1.3.3:compile
[INFO] | - jakarta.persistence:jakarta.persistence-api:jar:2.2.3:compile
[INFO] | - org.hibernate:hibernate-core:jar:5.4.27.Final:compile
[INFO] | | - org.jboss.logging:jboss-logging:jar:3.2.1.Final:compile
[INFO] | | - antlr:antlr:jar:2.7.7:compile
[INFO] | | - org.jboss:jandex:jar:2.1.3.Final:compile
[INFO] | | - com.fasterxml:classmate:jar:1.5.1:compile
[INFO] | | - org.dom4j:dom4j:jar:2.1.3:compile
[INFO] | | - org.hibernate.common:hibernate-commons-annotations:jar:5.1.2.Final:compile
[INFO] | | \- org.glassfish.jaxb:jaxb-runtime:jar:2.3.3:compile
[INFO] | | - org.glassfish.jaxb:txw2:jar:2.3.3:compile
[INFO] | | - com.sun.istack:istack-commons-runtime:jar:3.0.11:compile
[INFO] | | \- com.sun.activation:jakarta.activation:jar:1.2.2:runtime
[INFO] | - org.springframework.data:spring-data-jpa:jar:2.3.6.RELEASE:compile
[INFO] | | \- org.springframework:spring-orm:jar:5.2.12.RELEASE:compile
[INFO] | \- org.springframework:spring-aspects:jar:5.2.12.RELEASE:compile
[INFO] - com.sirea.atsp:oemResponseExtension:jar:1.0.2:compile
[INFO] - redis.clients:jedis:jar:2.7.2:compile
[INFO] - com.sirea.atsp:redis-client-wrapper:jar:1.1.0-SNAPSHOT:compile
[INFO] - javax.el:javax.el-api:jar:3.0.0:test
[INFO] - ru.yandex.qatools.allure:allure-junit-adaptor:jar:1.5.4:test
[INFO] | - ru.yandex.qatools.allure:allure-java-aspects:jar:1.5.4:test
[INFO] | | - ru.yandex.qatools.allure:allure-java-adaptor-api:jar:1.5.4:test
[INFO] | | | - ru.yandex.qatools.allure:allure-java-annotations:jar:1.5.4:test
[INFO] | | | | \- ru.yandex.qatools.allure:allure-model:jar:1.5.4:test
[INFO] | | | | - org.jvnet.jaxb2_commons:jaxb2-basics-runtime:jar:0.9.3:test
[INFO] | | | | \- ru.qatools.commons:properties:jar:2.0.RC5:test
[INFO] | | | \- org.apache.tika:tika-core:jar:1.7:test
[INFO] | | \- org.aspectj:aspectjrt:jar:1.9.6:test
[INFO] | \- junit:junit:jar:4.13.1:test
[INFO] - org.powermock:powermock-module-junit4:jar:2.0.9:test
[INFO] | - org.powermock:powermock-module-junit4-common:jar:2.0.9:test
[INFO] | | - org.powermock:powermock-reflect:jar:2.0.9:test
[INFO] | | | \- net.bytebuddy:byte-buddy-agent:jar:1.10.19:test
[INFO] | | \- org.powermock:powermock-core:jar:2.0.9:test
[INFO] | \- org.hamcrest:hamcrest-core:jar:2.2:test
[INFO] - org.javassist:javassist:jar:3.20.0-GA:compile
[INFO] - com.sirea.orchestrator:sirea-job-orchestrator:jar:1.0.2.RELEASE:compile
[INFO] | - org.springframework.boot:spring-boot-starter-webflux:jar:2.3.8.RELEASE:compile
[INFO] | | - org.springframework.boot:spring-boot-starter-reactor-netty:jar:2.3.8.RELEASE:compile
[INFO] | | | \- io.projectreactor.netty:reactor-netty:jar:0.9.16.RELEASE:compile
[INFO] | | | - io.netty:netty-codec-http:jar:4.1.58.Final:compile
[INFO] | | | - io.netty:netty-codec-http2:jar:4.1.58.Final:compile
[INFO] | | | - io.netty:netty-handler-proxy:jar:4.1.58.Final:compile
[INFO] | | | | \- io.netty:netty-codec-socks:jar:4.1.58.Final:compile
[INFO] | | | \- io.netty:netty-transport-native-epoll:jar:linux-x86_64:4.1.58.Final:compile
[INFO] | | | \- io.netty:netty-transport-native-unix-common:jar:4.1.58.Final:compile
[INFO] | | - org.springframework:spring-webflux:jar:5.2.12.RELEASE:compile
[INFO] | | \- org.synchronoss.cloud:nio-multipart-parser:jar:1.1.0:compile
[INFO] | | \- org.synchronoss.cloud:nio-stream-storage:jar:1.1.3:compile
[INFO] | - org.springframework.boot:spring-boot-starter-actuator:jar:2.3.8.RELEASE:compile
[INFO] | | - org.springframework.boot:spring-boot-actuator-autoconfigure:jar:2.3.8.RELEASE:compile
[INFO] | | | \- org.springframework.boot:spring-boot-actuator:jar:2.3.8.RELEASE:compile
[INFO] | | \- io.micrometer:micrometer-core:jar:1.5.10:compile
[INFO] | | - org.hdrhistogram:HdrHistogram:jar:2.1.12:compile
[INFO] | | \- org.latencyutils:LatencyUtils:jar:2.0.3:runtime
[INFO] | - org.springframework.kafka:spring-kafka:jar:2.5.11.RELEASE:compile
[INFO] | | - org.springframework.retry:spring-retry:jar:1.2.5.RELEASE:compile
[INFO] | | \- org.apache.kafka:kafka-clients:jar:2.5.1:compile
[INFO] | | - com.github.luben:zstd-jni:jar:1.4.4-7:compile
[INFO] | | - org.lz4:lz4-java:jar:1.7.1:compile
[INFO] | | \- org.xerial.snappy:snappy-java:jar:1.1.7.3:compile
[INFO] | - mysql:mysql-connector-java:jar:8.0.23:runtime
[INFO] | \- org.springframework.cloud:spring-cloud-starter-stream-kafka:jar:3.0.13.RELEASE:compile
[INFO] | \- org.springframework.cloud:spring-cloud-stream-binder-kafka:jar:3.0.13.RELEASE:compile
[INFO] | - org.springframework.cloud:spring-cloud-stream-binder-kafka-core:jar:3.0.13.RELEASE:compile
[INFO] | | \- org.springframework.integration:spring-integration-kafka:jar:3.3.1.RELEASE:compile
[INFO] | \- org.springframework.cloud:spring-cloud-stream:jar:3.0.13.RELEASE:compile
[INFO] | - org.springframework.boot:spring-boot-starter-validation:jar:2.3.8.RELEASE:compile
[INFO] | | \- org.hibernate.validator:hibernate-validator:jar:6.1.7.Final:compile
[INFO] | | \- jakarta.validation:jakarta.validation-api:jar:2.0.2:compile
[INFO] | - org.springframework.integration:spring-integration-core:jar:5.3.5.RELEASE:compile
[INFO] | - org.springframework.integration:spring-integration-jmx:jar:5.3.5.RELEASE:compile
[INFO] | \- org.springframework.cloud:spring-cloud-function-context:jar:3.0.14.RELEASE:compile
[INFO] | - net.jodah:typetools:jar:0.6.2:compile
[INFO] | \- org.springframework.cloud:spring-cloud-function-core:jar:3.0.14.RELEASE:compile
[INFO] - org.powermock:powermock-api-mockito2:jar:2.0.9:test
[INFO] | - org.powermock:powermock-api-support:jar:2.0.9:test
[INFO] | \- org.mockito:mockito-core:jar:3.3.3:test
[INFO] - org.springframework.boot:spring-boot-starter-test:jar:2.3.8.RELEASE:test
[INFO] | - org.springframework.boot:spring-boot-test:jar:2.3.8.RELEASE:test
[INFO] | - org.springframework.boot:spring-boot-test-autoconfigure:jar:2.3.8.RELEASE:test
[INFO] | - com.jayway.jsonpath:json-path:jar:2.5.0:compile
[INFO] | | \- net.minidev:json-smart:jar:2.3:compile
[INFO] | | \- net.minidev:accessors-smart:jar:1.2:compile
[INFO] | - jakarta.xml.bind:jakarta.xml.bind-api:jar:2.3.3:compile
[INFO] | | \- jakarta.activation:jakarta.activation-api:jar:1.2.2:compile
[INFO] | - org.assertj:assertj-core:jar:3.18.1:test
[INFO] | - org.hamcrest:hamcrest:jar:2.2:test
[INFO] | - org.junit.jupiter:junit-jupiter:jar:5.6.3:test
[INFO] | | - org.junit.jupiter:junit-jupiter-api:jar:5.6.3:test
[INFO] | | | - org.opentest4j:opentest4j:jar:1.2.0:test
[INFO] | | | \- org.junit.platform:junit-platform-commons:jar:1.6.3:test
[INFO] | | - org.junit.jupiter:junit-jupiter-params:jar:5.6.3:test
[INFO] | | \- org.junit.jupiter:junit-jupiter-engine:jar:5.6.3:test
[INFO] | - org.junit.vintage:junit-vintage-engine:jar:5.6.3:test
[INFO] | | - org.apiguardian:apiguardian-api:jar:1.1.0:test
[INFO] | | \- org.junit.platform:junit-platform-engine:jar:1.6.3:test
[INFO] | - org.mockito:mockito-junit-jupiter:jar:3.3.3:test
[INFO] | - org.skyscreamer:jsonassert:jar:1.5.0:test
[INFO] | | \- com.vaadin.external.google:android-json:jar:0.0.20131108.vaadin1:test
[INFO] | - org.springframework:spring-core:jar:5.2.12.RELEASE:compile
[INFO] | | \- org.springframework:spring-jcl:jar:5.2.12.RELEASE:compile
[INFO] | - org.springframework:spring-test:jar:5.2.12.RELEASE:test
[INFO] | \- org.xmlunit:xmlunit-core:jar:2.7.0:test
[INFO] - org.awaitility:awaitility:jar:3.0.0:test
[INFO] | - org.hamcrest:hamcrest-library:jar:2.2:test
[INFO] | \- org.objenesis:objenesis:jar:2.5.1:test
[INFO] \- org.awaitility:awaitility-proxy:jar:3.0.0:test
[INFO] \- net.bytebuddy:byte-buddy:jar:1.10.19:compile
問題:那么這里的問題是什么?如果靜態呼叫在 abc() 中,為什么我的存根不起作用,但只有 CampaignHandlerFactory 有效?
有版本沖突嗎?
uj5u.com熱心網友回復:
java.util.Collections并且java.util.stream.StreamSupport是系統類(作為 JRE 一部分的語言和實用程式庫)。系統類的呼叫者應該定義在@PrepareForTest({ClassThatCallsTheSystemClass.class}).
請參閱檔案。
不過,模擬系統類的方式與平時有所不同。通常你會準備一個包含你喜歡模擬的靜態方法(我們稱之為 X)的類,但是因為 PowerMock 不可能準備一個系統類來進行測驗,所以必須采取另一種方法。因此,您無需準備 X,而是準備呼叫 X 中的靜態方法的類!
所以你需要添加TestClazz.class到@PrepareForTest.
正確定義:
@PrepareForTest({ CampaignHandlerFactory.class, TestClazz.class})
執行測驗結果:
============INSIDE ABC===========
Mock for List, hashCode: 1800605369
Mock for Stream, hashCode: 847606512
Mock for ICampaignHandler, hashCode: 1736458419
============OUTSIDE ABC===========
Mock for List, hashCode: 1800605369
Mock for Stream, hashCode: 847606512
Mock for ICampaignHandler, hashCode: 1736458419
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/494264.html
標籤:爪哇 单元测试 模仿者 电源模拟 powermockito
上一篇:C#專案參考警告型別沖突
下一篇:單元測驗模擬資料庫回傳Null
