中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何解決Junit測試代碼的ea-async錯誤處理

發布時間:2021-10-11 10:56:55 來源:億速云 閱讀:303 作者:iii 欄目:編程語言

這篇文章主要介紹“如何解決Junit測試代碼的ea-async錯誤處理”,在日常操作中,相信很多人在如何解決Junit測試代碼的ea-async錯誤處理問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何解決Junit測試代碼的ea-async錯誤處理”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

問題背景

項目代碼中使用到了ea-async的語法糖await,在寫Junit測試代碼時,發生錯誤。

錯誤信息

Error during attachment using: com.ea.async.shaded.net.bytebuddy.agent.ByteBuddyAgent$AttachmentProvider$Compound@6e4f263e

如何解決Junit測試代碼的ea-async錯誤處理

問題原因

報錯信息顯示初始化失敗,初始化失敗的本質是因為找不到ea-async的包。但是ea-async明明是存在的,為什么會找不到呢? 這是因為ea-async語法糖本質做的事情是編譯織入,在生成字節碼階段,織入代碼實現對CompletableFuture對象的處理。這里使用到的技術應該是抽象語法樹,有興趣的同學可以繼續探究一下。回到本問題,怎么觸發ea-async的代碼織入呢?很簡單,在模塊打包階段加入ea-async-maven-plugin 插件,然后執行maven打包。

解決方案

在使用await模塊的pom中引入ea-async-maven-plugin

<build>
        <plugins>
		<plugin>
				<groupId>com.ea.async</groupId>
				<artifactId>ea-async-maven-plugin</artifactId>
				<version>1.2.3</version>
				<executions>
					<execution>
						<goals>
							<goal>instrument</goal>
							<goal>instrument-test</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
	</plugins>
</build>

執行maven打包

mvn clean package -Dmaven.test.skip=true

個人喜好用mvn clean install -Dmaven.test.skip=true(install 覆蓋了package階段)

其他規避方案

Main函數方式 如果覺得每次mvn打包太麻煩,并且測試代碼不打算提交,僅是測試功能,也可以直接寫個Main函數調用。 修改JVM方式 太麻煩,未研究

await使用的注意事項

在使用await的方法有返回值時,返回的方法類型必須要使用CompletionStage或子類(如:CompletableFuture)包裹起來。如下示例演示正確月錯誤的方法:

被調用的代碼

   public CompletableFuture<Integer> calledMethod() {
        return CompletableFuture.completedFuture(1);
    }

錯誤的寫法

    public boolean errorCallAwait() {
        int num = await(calledMethod());
        return num == 1;
    }

正確的寫法

    public CompletableFuture<Boolean> rightCallAwait() {
        int num = await(calledMethod());
        return CompletableFuture.completedFuture(num == 1);
    }

到此,關于“如何解決Junit測試代碼的ea-async錯誤處理”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

龙陵县| 广水市| 尖扎县| 始兴县| 南部县| 都匀市| 班玛县| 西丰县| 阿鲁科尔沁旗| 连江县| 新河县| 上饶县| 寿宁县| 基隆市| 南靖县| 资中县| 阿拉尔市| 奉贤区| 平度市| 斗六市| 将乐县| 浮梁县| 南阳市| 巴塘县| 墨脱县| 隆子县| 镇康县| 鹤庆县| 新干县| 新余市| 竹北市| 灵山县| 阳信县| 安福县| 甘泉县| 白山市| 托克托县| 屯门区| 浦北县| 大同县| 昆明市|