我有自己的項(xiàng)目,過去可以與 Java 8 完美配合。我使用的非?;镜臏y試框架是 TestNG 和 JMockit。最近我將 Java 版本升級到 Java 9,我注意到 JMockit 測試因 Java 模塊訪問問題而失敗。谷歌把我?guī)У竭@個(gè)堆棧溢出接受的解決方案模塊 java.base 不讀取模塊 java.desktop建議將 JMockit 升級到 1.34 或更高版本。之后我將其升級到目前的最新版本 1.43。進(jìn)行此升級后,我無法再運(yùn)行測試,而我得到的只是控制臺輸出中的 NullPointerException。我重現(xiàn)該問題的測試如下: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 方法不存在,但在添加一個(gè)空方法后,我在控制臺輸出中獲得了更多信息,我在下面列出了這些信息:我嘗試了多種排方式,例如使用@Mocked Delegate實(shí)例并創(chuàng)建ClassUnderTest自己,甚至回滾到 Java 8。沒有運(yùn)氣。我什至嘗試將測試移至 jUnit(這不是真正想要的選項(xiàng),因?yàn)橛?1400 多個(gè)測試類)。目前我的想法已經(jīng)用完了,但另一方面,上述用例是如此基礎(chǔ),以至于我真的希望我在做一件愚蠢的事情,因?yàn)槲沂褂昧?1.27 版本的這個(gè)嘲諷,不知道 JMockit 世界發(fā)生了什么變化框架。
添加回答
舉報(bào)
0/150
提交
取消