【发布时间】:2017-04-27 22:23:02
【问题描述】:
我有一个“final”类,我需要在其中测试私有方法, 尝试以下方式获取失败案例(异常)但得到错误
[junit] 原因:IllegalArgumentException:无法子类化 最后一堂课
如何解决这个错误,请任何人提出建议
//final class
public final Class Test {
//private constructor
private Test(Events event) {
//initialization
}
private JSONObject getReg() {
return new JSONObject;
}
private State Updation(String macAddr) {
try {
return update(getReg(), PATH, macAddr);
} catch (Exception e) {
throw new JSONException(e);
}
}
}
@PrepareForTest({Test.class})
@RunWith(PowerMockRunner.class)
public class TestClassTest {
@Test(expected = Exception.class)
public void UpdationInvalidTest() throws Exception {
JSONObject jsonObj = new JSONObject();
Test test = Whitebox.invokeConstructor(Test.class, event);
Test testSpy = PowerMockito.spy(test);
PowerMockito.doReturn(jsonObj).when(testSpy, "getReg");
Whitebox.invokeMethod(test, "Updation", "00:00:00:00:00:00");
}
}
【问题讨论】:
-
哇是
Whitebox和PowerMockito你能展示这两个类吗。这两个类不能扩展RebootDevice -
您在哪一行得到异常?您似乎在做正确的事情 (see this question)。
-
在这一行我得到类似“[junit] Caused by: java.lang.IllegalArgumentException: Cannot subclass final class”RebootDevice rebootDeviceSpy = PowerMockito.spy(rebootDevice);
-
你在哪里初始化
event变量?
标签: java junit mockito powermock powermockito