Powermockito java.lang.VerifyError

时间:2018-04-12 07:07:50

标签: java exception powermock powermockito verifyerror

我正在使用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();

但它会抛出java.lang.VerifyError。我做了很多嘲笑这种事情,没有这样的例外。删除@PrepareForTest和@Runwith会有所帮助,但是当我这样做时,我会失去力量。我的详细错误也在下面;

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

4 个答案:

答案 0 :(得分:1)

好的,我找到了答案。同时使用@PowerMockIgnore("javax.swing.*")

PowerMockito.mockStatic(ClassWithStatics.class);
when(ClassWithStatics.getString()).thenReturn("Hello!");

确实解决了我的问题。如果没有PowerMockito.when@PowerMockIgnore("javax.swing.*")将无效,反之亦然。 @stuXnet和@staszko032都是正确的,但这些建议不能单独使用。注意:WhenNew也在工作但不是在这种情况下。

答案 1 :(得分:0)

seems to be a problem有Powermock,@PrepareForTest和静态方法。

使用@PowerMockIgnore("javax.swing.*")注释您的测试类(注释为on GitHub)是否有帮助?

答案 2 :(得分:0)

这不是你应该用PowerMockito模拟静态的方法。

请参阅此代码段(PowerMockito mock single static method and return object

PowerMockito.mockStatic(ClassWithStatics.class);
when(ClassWithStatics.getString()).thenReturn("Hello!");

由于你想模拟静态方法,你不应该在新建时使用它,这可能会导致你的错误。

答案 3 :(得分:0)

我有一个稍微不同的问题。我看到有关抱怨javax.net。*中的类的错误,所以我将javax.net。*添加到@PowerMockIgnore(...),它为我解决了这个问题。似乎您可以简单地忽略问题包,这将解决您的问题。