亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

與 JUNIT5 一起使用時在 JMockit 庫中獲取異常

與 JUNIT5 一起使用時在 JMockit 庫中獲取異常

白衣非少年 2023-03-17 14:01:08
我正在嘗試將我所有的 JUNIT4 測試用例轉換為使用 Jmockit 的 JUNIT5 測試用例。當我設法轉換其中之一并執行時,我在 JMockit 庫中收到此錯誤,這是我的應用程序的依賴項,java.lang.NullPointerException    at mockit.internal.startup.Startup.retransformClass(Startup.java:98)    at mockit.internal.state.CachedClassfiles.getClassfile(CachedClassfiles.java:123)    at mockit.internal.ClassFile.createReaderOrGetFromCache(ClassFile.java:92)    at mockit.internal.classGeneration.ImplementationClass.generateClass(ImplementationClass.java:35)    at mockit.internal.expectations.mocking.BaseTypeRedefinition.generateNewMockImplementationClassForInterface(BaseTypeRedefinition.java:163)    at mockit.internal.expectations.mocking.BaseTypeRedefinition.createMockInterfaceImplementationDirectly(BaseTypeRedefinition.java:124)    at mockit.internal.expectations.mocking.BaseTypeRedefinition.createMockedInterfaceImplementationAndInstanceFactory(BaseTypeRedefinition.java:84)    at mockit.internal.expectations.mocking.BaseTypeRedefinition.redefineType(BaseTypeRedefinition.java:61)    at mockit.internal.expectations.mocking.TypeRedefinition.redefineType(TypeRedefinition.java:28)    at mockit.internal.expectations.mocking.FieldTypeRedefinitions.redefineFieldType(FieldTypeRedefinitions.java:78)    at mockit.internal.expectations.mocking.FieldTypeRedefinitions.redefineFieldType(FieldTypeRedefinitions.java:65)    at mockit.internal.expectations.mocking.FieldTypeRedefinitions.redefineFieldTypes(FieldTypeRedefinitions.java:53)請在此處找到可用于調試的示例代碼,https://github.com/siva54/jmockit-junit5-stackoverflow/blob/master/test/java8testing/JUnit5Test.java
查看完整描述

1 回答

?
人到中年有點甜

TA貢獻1895條經驗 獲得超7個贊

發現了問題。該問題與使用的 Jmockit 版本有關。在我將 JMockit 版本恢復到 1.42 后問題得到解決,


<dependency>

  <groupId>org.jmockit</groupId>

  <artifactId>jmockit</artifactId>

  <version>1.42</version>

  <scope>test</scope>

</dependency>

這個問題與構建可用于將類改造為模擬對象的工具密切相關。要運行 JMockit,需要將 Jmockit JAR 作為 java 代理傳遞。在 1.43 之前,如果沒有通過 java 代理,JMockit 庫會搜索項目的依賴項并將其自動添加到 VM 對象中。在 1.42 之后,JMockit 開發人員認為這種查找 JAR 的方式不是一個好的標準,因此被完全刪除。從而需要手動傳遞java代理。


以下是與該問題相關的一些參考鏈接,

https://github.com/jmockit/jmockit1/issues/540#issuecomment-444316617

https://github.com/jmockit/jmockit1/issues/546

https://github.com/jmockit/jmockit1/issues/568

解決此類問題的方法是

  • 移至版本 1.42

  • 遵循 JMockit 開發人員的這個示例并執行相同的操作。

https://github.com/jmockit/jmockit1/blob/master/samples/petclinic/pom.xml


查看完整回答
反對 回復 2023-03-17
  • 1 回答
  • 0 關注
  • 180 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號