91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

如何解決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

宜昌市| 晋江市| 上饶县| 裕民县| 米脂县| 长寿区| 通州市| 深泽县| 晴隆县| 鸡西市| 武鸣县| 邹城市| 九台市| 永州市| 固阳县| 福建省| 蓬莱市| 平顶山市| 南木林县| 元氏县| 临猗县| 伊金霍洛旗| 菏泽市| 新津县| 金乡县| 武平县| 淮北市| 哈尔滨市| 常熟市| 北宁市| 武乡县| 岳普湖县| 隆昌县| 长海县| 香格里拉县| 武川县| 新津县| 呼和浩特市| 祥云县| 辉南县| 永春县|