我有一个类需要测试:
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);
}
}
我必须模拟静态调用,以便它按我的预期返回
我遵循以下步骤:
结果:
============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
你们可以看到2/3我的存根设置不起作用,如果静态调用在abc()内部,如果我在abc()外部复制静态调用(直接复制到test(),它就会起作用。只有1/3的存根工作(内部和外部):
CampaignHandlerFactory.getCampaignHandler(param) //this return as my expectiation
提示:CampaignHandlerFactory是我的实现;集合、StreamSupport是内置类。这是spring启动应用程序
测试依赖树:
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()中,而只能使PolignHandlerFactory工作,那么我的存根就不起作用了?
是否存在版本冲突?
java.util。集合
和<code>java.util.stream。StreamSupport是系统类(属于JRE的语言和实用程序库)。系统类的调用者应该在<code>@PrepareForTest({classThatCallsSystemClass.class})中定义。
请参阅文档。
不过,模拟系统类的方法与通常的有点不同。通常,您会准备包含您喜欢模拟的静态方法(让我们称之为X)的类,但因为PowerMock不可能准备一个系统类进行测试,所以必须采取另一种方法。所以不要准备X,而是准备在X中调用静态方法的类!
所以需要将< code>TestClazz.class添加到< code>@PrepareForTest中。< br >正确的定义:
@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
编辑: 感谢所有的回复。我找到了解决办法。我试图模拟一个方法findById,它不是直接在User.class中,而是在用户扩展的genericModel.class中。现在一切都很完美。
问题内容: 我正在尝试模拟私有静态方法。见下面的代码 这是我的测试代码 但是我运行的每个瓦片都会出现此异常 我想我在嘲弄东西时做错了什么。有什么想法我该如何解决? 问题答案: 为此,您可以使用和。 此外,您必须在测试类中指定PowerMock运行器,并准备要进行测试的类,如下所示: 希望对您有帮助。
在尝试模拟InetAddress中的静态方法时,我遇到了奇怪的问题。我成功地能够为许多其他类模拟静态方法,并且一切正常,但InetAddress显示不同的行为。我使用的是JUnit 4. x、Mockito 1.9.5 下面给出了使用Mockito和PowerMock以及InetAddress模拟的测试- 当我将下面给出的方法放入某个实用程序InetAddress中时。getLocalHost()
我想从一个包含两个静态方法m1和M2的类中模拟一个静态方法m1。并且我希望方法m1返回一个对象。 我尝试了以下操作 2)但在执行m1时不调用它。
当所有参数都在使用匹配器时,为什么我会得到这个异常?如何解决?我调试了它,发现返回null。 当我将注释添加到测试类并运行测试时,junit不会做出响应。为什么? 编辑 我试着不使用论据匹配器,结果