Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powermockito java.lang.VerifyError_Java_Exception_Powermock_Powermockito_Verifyerror - Fatal编程技术网

Powermockito java.lang.VerifyError

Powermockito java.lang.VerifyError,java,exception,powermock,powermockito,verifyerror,Java,Exception,Powermock,Powermockito,Verifyerror,我使用的是powermock.mockstatic这行代码,所以我可以控制它的返回值,因为它是唯一的摆动,我不需要测试它 @Before public void setUp() throws Exception RelatedIntelligencePanel rel = Mockito.mock(RelatedIntelligencePanel.class); PowerMockito.mockStatic(RelatedIntelligencePanel.class); PowerMock

我使用的是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会有帮助,但这样做时我会失去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
其中包括Powermock、
@PrepareForTest
和静态方法


@PowerMockIgnore(“javax.swing.*)
注释测试类是否有帮助?

这不是用PowerMockito模拟静态的方法

请参阅此代码段()


由于您想要模拟静态方法,所以不应该使用whenNew构造,可能这会导致错误。

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

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

他解决了我的问题<当没有@PowerMockIgnore(“javax.swing.*”)时,PowerMockito.when将无法工作,反之亦然。@stuXnet和@staszko032都是正确的,但这些建议并不能单独起作用。注意:WhenNew也在工作,但在本例中不起作用。

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

因为我试图模拟一些新的创建,所以我必须使用noArgs。我还尝试了-noverify和-XX:-使用SplitVerifier,但两者都没有帮助。如果我无能为力,我可能不得不重构这个类,这样我就不必使用PowerMockito了,但是这项工作太多了,所以我想避免这样做。你能提供一个解决方案吗?这将对解决这个问题有很大帮助。除此之外,我在我的示例中所写的唯一能说明的是我使用了@RunWith(PowerMockRunner.class)和@PrepareForTest({AccessServiceUtil.class,RelatedIntelligencePanel.class})在我上面的代码中,StaticMock类甚至没有使用AccessServiceUtil,但我尝试在代码中添加更多细节。我希望有帮助。
PowerMockito.mockStatic(ClassWithStatics.class);
when(ClassWithStatics.getString()).thenReturn("Hello!");