【发布时间】:2016-08-31 11:25:56
【问题描述】:
我有一些测试类需要验证是否调用了 GLFW 函数。但是当我想在 IntelliJ 中执行所有测试时,我得到了错误:
Native Library lwjgl.dll already loaded in another classloader
我使用 Powermock 来验证静态方法是否已被调用:
@RunWith(PowerMockRunner.class)
@PrepareForTest({GLFW.class})
public class GlfwWindowImplTest {
// ...
@Test
public void update_swapsBufferAndPollsEvents() {
GlfwWindowImpl target = new GlfwWindowImpl(1L);
mockStatic(GLFW.class);
target.update();
verifyStatic();
GLFW.glfwSwapBuffers(1L);
verifyStatic();
GLFW.glfwPollEvents();
}
}
@RunWith(PowerMockRunner.class)
@PrepareForTest({GLFW.class})
public class GlfwWindowSystemImplTest {
// ...
@Test(expected = GlfwInitializeException.class)
public void initialize_throwsExceptionIfGlfwInitFails() {
GlfwWindowSystemImpl target = new GlfwWindowSystemImpl();
mockStatic(GLFW.class);
when(GLFW.glfwInit()).thenReturn(GL_FALSE);
target.initialize();
}
}
【问题讨论】:
-
@PrepareForTest({GLFW.class})修改类并将其加载到新的类加载器中。 -
@Exhauzt 你有没有找到解决这个问题的方法?我不明白下面的解决方案告诉你做什么。您的原始代码似乎已经有
@PrepareForTest({GLFW.class})... 那么您有什么不同的做法呢?谢谢 -
不,我实际上没有找到解决方案,但不久之后我不得不做另一个项目......所以我没有在这个主题上挖掘太多来找到解决方案。我也不明白那个解决方案
标签: java intellij-idea dll junit powermock