Mer*_*rtG 5 java exception powermock verifyerror powermockito
我正在使用 powermock.mockstatic 这条线,这样我就可以控制它的返回值,因为它是唯一的摆动,我不必测试它。
@Before
public void setUp() throws Exception
RelatedIntelligencePanel rel = Mockito.mock(RelatedIntelligencePanel.class);
PowerMockito.mockStatic(RelatedIntelligencePanel.class);
PowerMockito.whenNew(RelatedIntelligencePanel.class).withNoArguments().thenReturn(rel);
...
.. some other unrelated code
}
...........
........ some other code and Tests
......
@Test
public class SomeClass{
RelatedIntelligencePanel relIntPanel = new RelatedIntelligencePanel();
Run Code Online (Sandbox Code Playgroud)
但它会抛出java.lang.VerifyError。我曾经嘲笑过很多这样的事情,没有一个例外。删除 @PrepareForTest 和 @Runwith 有帮助,但当我这样做时我会失去 powermock。我的详细错误也在下面;
java.lang.VerifyError: Bad return type
Exception Details:
Location:
javax/swing/plaf/metal/MetalLookAndFeel.getLayoutStyle()Ljavax/swing/LayoutStyle @3: areturn
Reason:
Type 'javax/swing/plaf/metal/MetalLookAndFeel$MetalLayoutStyle' (current frame, stack[0]) is not assignable to 'javax/swing/LayoutStyle' (from method signature)
Current Frame:
bci: @3
flags: { }
locals: { 'javax/swing/plaf/metal/MetalLookAndFeel'}
stack {'javax/swing/plaf/metal/MetalLookAndFeel$MetalLayoutStyle'}
Bytecode:
0x0000000: b807 49b0
Run Code Online (Sandbox Code Playgroud)
好的,我找到了答案。同时使用@PowerMockIgnore("javax.swing.*")和
PowerMockito.mockStatic(ClassWithStatics.class);
when(ClassWithStatics.getString()).thenReturn("Hello!");
Run Code Online (Sandbox Code Playgroud)
确实解决了我的问题。PowerMockito.when没有它就行不通@PowerMockIgnore("javax.swing.*"),反之亦然。@stuXnet 和 @staszko032 都是正确的,但这些建议并不能单独发挥作用。注意:WhenNew 也可以工作,但在这种情况下不行。
| 归档时间: |
|
| 查看次数: |
4144 次 |
| 最近记录: |