In my project there is requirement where in I need to mock final class.
I am using Test-NG for unit tests.
I tried different things to mock but failed to do so. I also checked different stack overflow posts.
When running testng test case I am getting below error -
java.lang.IllegalArgumentException: Cannot subclass final class class com.AskStateParams
at org.mockito.cglib.proxy.Enhancer.generateClass(Enhancer.java:447)
at org.mockito.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)
at org.mockito.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:217)
at org.mockito.cglib.proxy.Enhancer.createHelper(Enhancer.java:378)
at org.mockito.cglib.proxy.Enhancer.createClass(Enhancer.java:318)
at org.mockito.internal.creation.jmock.ClassImposterizer.createProxyClass(ClassImposterizer.java:110)
at org.mockito.internal.creation.jmock.ClassImposterizer.imposterise(ClassImposterizer.java:62)
at org.powermock.api.mockito.internal.mockcreation.MockCreator.createMethodInvocationControl(MockCreator.java:110)
at org.powermock.api.mockito.internal.mockcreation.MockCreator.mock(MockCreator.java:60)
In pom.xml am using below dependencies -
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.8.8</version>
<optional>true</optional>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.9.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-mockito-release-full</artifactId>
<version>1.5.1</version>
<classifier>full</classifier>
</dependency>
TestNG code is as below -
@RunWith(PowerMockRunner.class)
@PrepareForTest(AskStateParams.class)
public class TestProcessor17100AAskAmount extends AbstractPowerMockProcessorTest {
@Test
public void test() {
AskStateRequestParams askParams=PowerMockito.mock(AskStateRequestParams.class);
PowerMockito.when(askParams.getCallerInput()).thenReturn("1000");
PowerMockito.when(askParams.getResultCode()).thenReturn("Y");
PowerMockito.when(askParams.getMiString()).thenReturn("P=B");
Assert.assertEquals(baseProcessor.postProcess(requestContext), "amount");
}
}