相关疑难解决方法(0)

模拟系统类时Mockito + PowerMock LinkageError

我有这样的代码片段:

@RunWith(PowerMockRunner.class)
@PrepareForTest({Thread.class})
public class AllMeasuresDataTest {

@Before
public void setUp() throws Exception {
}

@Test
public void testGetMeasures() {
    AllMeasuresData measure = new AllMeasuresData();
    assertEquals(measure.getMeasures(), null);
    HashMap<String, Measure> map = new HashMap<String, Measure>();
    measure.setMeasures(map);
    assertEquals(measure.getMeasures(), map);
    measure.setMeasures(null);
    assertEquals(measure.getMeasures(), null);
}

@Test
public void testAllMeasuresData() throws IOException {
    ClassLoader loader = PowerMockito.mock(ClassLoader.class);
    Thread threadMock = PowerMockito.mock(Thread.class);
    Vector<URL> vec = new Vector<URL>();
    Mockito.when(loader.getResources("measure")).thenReturn(vec.elements());
    Mockito.when(threadMock.getContextClassLoader()).thenReturn(loader);
    PowerMockito.mockStatic(Thread.class);
    Mockito.when(Thread.currentThread()).thenReturn(threadMock);
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

在运行此测试时,我得到了:

java.lang.LinkageError: loader constraint violation: loader (instance of org/powermock/core/classloader/MockClassLoader) previously initiated loading …
Run Code Online (Sandbox Code Playgroud)

java junit4 mockito powermock linkageerror

146
推荐指数
7
解决办法
7万
查看次数

PowerMock:无效的常量类型:18

在我的工作中,我的实际责任是测试和重构旧代码.

我阅读了2本关于使用遗留代码进行测试和测试的书籍,现在我陷入了困境,没有任何进展.

我只是想用PowerMock来模拟一个对象,因为它是一个静态初始化器.但现在我的问题是,只要我添加"RunWith"注释,我的测试就会崩溃.

这是我的堆栈跟踪.

java.lang.IllegalStateException: Failed to transform class with name test.ContentPanelTest. Reason: java.io.IOException: invalid constant type: 18
at org.powermock.core.classloader.MockClassLoader.loadMockClass(MockClassLoader.java:266)
at org.powermock.core.classloader.MockClassLoader.loadModifiedClass(MockClassLoader.java:180)
at org.powermock.core.classloader.DeferSupportingClassLoader.loadClass(DeferSupportingClassLoader.java:68)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.createDelegatorFromClassloader(JUnit4TestSuiteChunkerImpl.java:145)
at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.createDelegatorFromClassloader(JUnit4TestSuiteChunkerImpl.java:40)
Run Code Online (Sandbox Code Playgroud)

我认为这可能是我的JRE的一个问题.所以我已经将我正在使用的每个库更新到最新版本.但问题仍然是一样的.

我从互联网上尝试了几种建议的解决方案.但至少有一个人帮我解决了我的问题.

我希望你能帮助我.如果有人需要一些额外的信息我可以发布你需要的任何东西

提前感谢您和奥地利的问候!

java types constants powermock

6
推荐指数
0
解决办法
3030
查看次数

标签 统计

java ×2

powermock ×2

constants ×1

junit4 ×1

linkageerror ×1

mockito ×1

types ×1