我有自己的项目,过去可以与 Java 8 完美配合。我使用的非常基本的测试框架是 TestNG 和 JMockit。最近我将 Java 版本升级到 Java 9,我注意到 JMockit 测试因 Java 模块访问问题而失败。谷歌把我带到这个堆栈溢出接受的解决方案模块 java.base 不读取模块 java.desktop建议将 JMockit 升级到 1.34 或更高版本。之后我将其升级到目前的最新版本 1.43。进行此升级后,我无法再运行测试,而我得到的只是控制台输出中的 NullPointerException。我重现该问题的测试如下:package com.my.org;import mockit.FullVerifications;import mockit.Injectable;import mockit.Tested;import org.testng.annotations.BeforeMethod;import org.testng.annotations.Test;public class JMockitIssueTest { private class Delegate { public void doSomething() { System.out.println("Doing something"); } } private class ClassUnderTest { private final Delegate delegate; private ClassUnderTest(Delegate delegate) { this.delegate = delegate; } public void useDelegate() { delegate.doSomething(); } } @BeforeMethod public void setUp() throws Exception { } @Injectable private Delegate delegate; @Tested private ClassUnderTest classUnderTest; @Test public void itShouldUseDelegate() { classUnderTest.useDelegate(); new FullVerifications() {{ delegate.doSomething(); }}; }}最初 setUp 方法不存在,但在添加一个空方法后,我在控制台输出中获得了更多信息,我在下面列出了这些信息:我尝试了多种排方式,例如使用@Mocked Delegate实例并创建ClassUnderTest自己,甚至回滚到 Java 8。没有运气。我什至尝试将测试移至 jUnit(这不是真正想要的选项,因为有 1400 多个测试类)。目前我的想法已经用完了,但另一方面,上述用例是如此基础,以至于我真的希望我在做一件愚蠢的事情,因为我使用了 1.27 版本的这个嘲讽,不知道 JMockit 世界发生了什么变化框架。
添加回答
举报
0/150
提交
取消
