Atu*_*tul 5 testng final easymock powermock
我是PowerMock的新手,找不到适合我情况的示例。
没什么复杂的-我正在尝试使用PowerMock + EasyMock模拟TestNG测试中的最终类。
这是最后一堂课:
public final class MyFinalClass {
private String myString = "someString";
public final String getMyString() {
return myString;
}
}
Run Code Online (Sandbox Code Playgroud)
被测类委托最终类的一个实例:
public class MyActiveClass {
private MyFinalClass finalClass;
public String getFinalString() {
return finalClass.getMyString();
}
public void setFinalClass(MyFinalClass finalClass) {
this.finalClass = finalClass;
}
}
Run Code Online (Sandbox Code Playgroud)
这是Test类:
import static org.easymock.EasyMock.expect;
import org.powermock.api.easymock.PowerMock;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.testng.PowerMockTestCase;
import org.testng.Assert;
import org.testng.annotations.Test;
@PrepareForTest({ MyFinalClass.class })
public class MyTestClass extends PowerMockTestCase {
private MyActiveClass activeClass = new MyActiveClass();
private MyFinalClass mockFinalClass;
@Test
public void getFinalString() {
String expectedString = "mockedReturnString";
mockFinalClass = PowerMock.createMock(MyFinalClass.class);
activeClass.setFinalClass(mockFinalClass);
expect(mockFinalClass.getMyString()).andReturn(expectedString);
PowerMock.replayAll();
Assert.assertEquals(activeClass.getFinalString(), expectedString);
PowerMock.verifyAll();
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我运行测试时,我收到一个非法的参数异常,抱怨MyFinalClass不是接口:
FAILED: getFinalString
java.lang.IllegalArgumentException: MyFinalClass is not an interface
at java.lang.reflect.Proxy.getProxyClass(Unknown Source)
at java.lang.reflect.Proxy.newProxyInstance(Unknown Source)
at org.easymock.internal.JavaProxyFactory.createProxy(JavaProxyFactory.java:24)
at org.easymock.internal.MocksControl.createMock(MocksControl.java:51)
at org.powermock.api.easymock.PowerMock.doCreateMock(PowerMock.java:2212)
at org.powermock.api.easymock.PowerMock.doMock(PowerMock.java:2163)
at org.powermock.api.easymock.PowerMock.createMock(PowerMock.java:89)
at MyTestClass.getFinalString(MyTestClass.java:22)
...
Run Code Online (Sandbox Code Playgroud)
我想念什么?在此先感谢您的帮助!!!
以下是一些选项:
MyFinalClass并模拟该接口。MyFinalClass委托并模拟包装器对象。MyFinalClass| 归档时间: |
|
| 查看次数: |
5859 次 |
| 最近记录: |