PowerMockito.whenNew() 没有被嘲笑,原始方法是用 junit 5 调用的
PowerMockito.whenNew() is not getting mocked and original method is called with junit 5
我正在为项目编写 Junit jupiter 测试。我正在尝试使用 mock 来模拟新实例的创建。
但是我得到的不是模拟对象,而是实际对象
请看下面我的代码
主要javaclass
public class TestSubjectClass {
public String doSomething() {
Integer number = new Integer(1);
return internalLogic(number.toString());
}
}
我的测试class
@RunWith(PowerMockRunner.class)
@PrepareForTest(TestSubjectClass.class)
class TestSubjectClassTest {
@Test
public void mockNewObjectCreation() throws Exception {
TestSubjectClass testedClass = new TestSubjectClass();
Integer mockedValue = new Integer(5);
PowerMockito.whenNew(Integer.class).withAnyArguments().thenReturn(mockedValue);
String output = testedClass.doSomething();
assertThat(output, CoreMatchers.containsString("Here is an input: 5"));
}
}
我的pom.xml
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>2.0.7</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito2</artifactId>
<version>2.0.7</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-core</artifactId>
</dependency>
当我 运行 junit 5 测试新实例的实际模拟没有发生。任何线索我做错了什么
Java.lang.assertionerror:
预期:包含“Here is an input 5”的字符串
但是是“这是输入 1”
错误:
我不会对这个特定测试进行分析或发表任何评论,但请注意,到目前为止,还没有对 JUnit 5 的 PowerMock 支持:
https://github.com/powermock/powermock/issues/830
因此您可能要考虑为此使用 JUnit 4。
我正在为项目编写 Junit jupiter 测试。我正在尝试使用 mock 来模拟新实例的创建。 但是我得到的不是模拟对象,而是实际对象
请看下面我的代码
主要javaclass
public class TestSubjectClass {
public String doSomething() {
Integer number = new Integer(1);
return internalLogic(number.toString());
}
}
我的测试class
@RunWith(PowerMockRunner.class)
@PrepareForTest(TestSubjectClass.class)
class TestSubjectClassTest {
@Test
public void mockNewObjectCreation() throws Exception {
TestSubjectClass testedClass = new TestSubjectClass();
Integer mockedValue = new Integer(5);
PowerMockito.whenNew(Integer.class).withAnyArguments().thenReturn(mockedValue);
String output = testedClass.doSomething();
assertThat(output, CoreMatchers.containsString("Here is an input: 5"));
}
}
我的pom.xml
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>2.0.7</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito2</artifactId>
<version>2.0.7</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-core</artifactId>
</dependency>
当我 运行 junit 5 测试新实例的实际模拟没有发生。任何线索我做错了什么
Java.lang.assertionerror: 预期:包含“Here is an input 5”的字符串 但是是“这是输入 1”
错误:
我不会对这个特定测试进行分析或发表任何评论,但请注意,到目前为止,还没有对 JUnit 5 的 PowerMock 支持:
https://github.com/powermock/powermock/issues/830
因此您可能要考虑为此使用 JUnit 4。