PowerMock을 사용하여 Math의 정적 메서드를 테스트하는 테스트 케이스가 있습니다.
@RunWith(PowerMockRunner.class)
@PrepareForTest( { Math.class })
public class Test{
@Test
public void test2(){
PowerMockito.mockStatic(Math.class);
EasyMock.expect(Math.abs(-123)).andReturn(1);
EasyMock.replay(Math.class);
long returns = Math.abs(-123);
EasyMock.verify(Math.class);
org.junit.Assert.assertEquals(1,returns);
}
}
내 pom.xml은 다음과 같습니다.
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>${mockito.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.easymock</groupId>
<artifactId>easymock</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito</artifactId>
<version>1.6.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>1.6.2</version>
<scope>test</scope>
</dependency>
그리고 나는
java.lang.IllegalArgumentException: Not a mock: java.lang.Class
at org.easymock.internal.MocksControl.getControl(MocksControl.java:175)
at org.easymock.EasyMock.getControl(EasyMock.java:2130)
at org.easymock.EasyMock.replay(EasyMock.java:2032)
PowerMock을 사용하는 것은 이번이 처음이고, 정적 메서드를 테스트하려고하고 테스트 할 Java Math 클래스를 선택합니다. https://code.google.com/p/powermock/wiki/MockStatic 의 지침에있는 모든 부분을 수행 한 것 같습니다.
내 테스트 케이스에 어떤 문제가 있습니까?
EasyMock을 사용하는 대신 mockito를 사용하여 대체합니다.
PowerMockito.mockStatic(Math.class);
Mockito.when(Math.abs(-123)).thenReturn(1);
int returns = Math.abs(-123);
이 코드는 Java 7에서 잘 작동하지만 Java 8에서는 실패합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다