日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

tms tck_在雅加达EE TCK中使用Arquillian的可能方法

發(fā)布時間:2023/12/3 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 tms tck_在雅加达EE TCK中使用Arquillian的可能方法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

tms tck

最近,我們討論了如何創(chuàng)建獨立的Jakarta Batch測試套件(TCK)。 對于大多數(shù)提交者而言,使用Arquillian將測試從實現(xiàn)中如何執(zhí)行抽象化是很自然的。 但是Romain提出了一個有趣的想法,即使用純JUnit5引起了我的思考。 它并沒有止于思考。 經(jīng)過數(shù)小時的黑客攻擊后,我現(xiàn)在可以提出概念證明,并提出如何將普通的JUnit5用于TCK的建議,以及如何使用良好的舊Arquillian將容器與之集成,以避免重新發(fā)明輪子。

當前的獨立Batch TCK的問題在于它基于TestNG,并且僅支持在與測試套件相同的類路徑上運行的Batch實現(xiàn)。 因此,它不支持在Java容器(如應(yīng)用程序服務(wù)器)中運行測試。 現(xiàn)在,只有Jakarta測試套件(CTS)支持此類容器,該套件包含一個批處理TCK測試的副本,該測試使用專有技術(shù)在容器中運行測試。

還有其他帶有獨立TCK或計劃創(chuàng)建它的Jakarta EE規(guī)范:

  • CDI TCK –與Arquillian一起使用TestNG
  • Bean驗證 –與Arquillian一起使用TestNG
  • JSON-B –正在進行中,與Arquillian一起使用JUnit 4
  • DI TCK – JUnit 4

顯然Arquillian在其中很受歡迎。 只有DI TCK不使用它。 但是DI TCK本身也不支持在遠程容器中執(zhí)行,它僅支持設(shè)置本地容器,例如,如果實現(xiàn)支持,則使用CDI SE API。

我的概念證明有3個目標:

  • 改進TCK,使其可以與Java容器集成
  • 修改現(xiàn)有示例項目以使用TCK運行JBatch
  • 創(chuàng)建另一個將TCK與典型的Jakarta EE服務(wù)器(例如Payara Server)集成的示例
  • 如果可以的話,我更喜歡循序漸進而不是爆炸式發(fā)展。 而且我意識到,即使我找到了使用JUnit 5的解決方案,無論如何我都可能需要Arquillian與Payara Server集成以實現(xiàn)我的第三個目標。因此,我首先在當前的Batch TCK中添加了對Arquillian的支持,后來希望重用它。將Payara Server與JUnit 5集成在一起。事實證明,這是一種很好的方法,并且不會浪費任何代碼。

    添加對Arqullian的支持

    在批處理TCK中添加對Arquillian的支持非常簡單,因為測試已使用TestNG,而Arquillian開箱即用地支持TestNG。 唯一棘手的部分是為Arquillian所需的每個測試創(chuàng)建一個部署程序包。 最后,這非常容易,不需要修改測試源。 Arquillian允許創(chuàng)建擴展以為每個測試定義部署程序包,因此我能夠?qū)⒉渴鸪绦虬膭?chuàng)建移到單獨的擴展程序中。 需要在容器中運行測試的實現(xiàn)可以使用此擴展,但TCK本身不需要此擴展。

    TCK中唯一需要的更改是更改每個測試以擴展Arquillian TestNG基類,僅此而已。

    在測試套件的頂部,批處理TCK包含一個示例TCK運行器項目,該項目針對JBatch實現(xiàn)運行TCK。 這也需要稍作更改。 我添加了Arquillian Weld SE連接器,該連接器在Weld CDI容器中運行Arquillian TestNG測試。 這意味著測試將在與測試套件相同的類路徑上執(zhí)行,并且不需要Arquillian部署。

    您可以在這里在我的叉子上看到最終結(jié)果: https : //github.com/OndroMih/batch-tck/pull/1 。 總之,我向每個TCK測試添加了一行代碼,并修改了批處理TCK和JBatch的TCK運行器的pom.xml。

    這使我可以創(chuàng)建一個示例項目 ,以使用遠程服務(wù)器(如Payara Server)運行TCK。 這個示例項目包含我上面提到的Arquillian擴展。 此擴展使用Maven解析器庫來解析項目的pom.xml文件中的JAR依賴項,并將其打包到Arquillian的WAR部署中。 它并不復(fù)雜,只需要幾行代碼: MavenTestDependenciesDeploymentPackager.java

    將TCK轉(zhuǎn)換為JUnit5

    將基于TestNG的TCK轉(zhuǎn)換為JUnit 5非常簡單。 除了用JUnit 5等效項替換所有TestNG注釋外,我還需要用標準Java JUL日志記錄替換TestNG報告。

    您可以在這里查看我的轉(zhuǎn)換的最終結(jié)果: https : //github.com/OndroMih/batch-tck/pull/2 。 更改了TCK,并且JBatch調(diào)諧器項目也使用了它,并且運行無測試失敗。 這解決了我的前2個目標。

    最難的事情是將JUnit 5測試套件與Payara Server連接起來以滿足我的第3個目標。 為此,我需要解決以下問題:

    • 創(chuàng)建一個部署程序包以將測試部署到Payara Server
    • 創(chuàng)建一個JUnit 5擴展以在Payara Server中運行測試并向后報告結(jié)果

    在上一步中,我已經(jīng)使用Arquillian擴展解決了第一個問題。 似乎有一個非正式的JUnit 5擴展可以運行Arquillian測試。 是的,它確實有效,我能夠?qū)⑺羞@些合并為最終實現(xiàn)我所有3個目標的解決方案。

    使用Arquillian運行JUnit 5 TCK

    幸運的是,Arquillian社區(qū)一直在為JUnit 5提供支持 。 盡管在等待僅在JUnit 5.5中添加的基本擴展點時花了一些時間,但是現(xiàn)在有一個非正式的arquillian-junit5擴展 , 此分叉中有一些修復(fù)程序。

    因此,我嘗試將所有已經(jīng)擁有的東西匯總起來,以嘗試是否可以對Payara Server運行轉(zhuǎn)換后的JUnit 5 Batch TCK:

    • 使用JUnit 5 Batch TCK作為依賴項
    • 添加arquillian-junit5擴展名(從本地本地構(gòu)建)
    • 添加我之前創(chuàng)建的Arquillian部署擴展
    • 將Arquillian配置為與Payara連接器一起運行,就像我之前所做的那樣

    因此,我做到了,啟動了Payara Server,配置了必要的JDBC資源,并執(zhí)行了以下操作:

    Java

    mvn verify

    ……并祈禱。

    幾分鐘后:

    Java

    Results: Tests run: 164 , Failures: 0 , Errors: 0 , Skipped: 3

    一切正常! 這包括所有TCK測試,包括要求具有Jakarta EE功能的測試,并且這些測試無法針對獨立的Batch實現(xiàn)(如JBatch)運行。 TCK目前正在跳過這3個被跳過的測試,而不是我的配置正在跳過這些測試。

    摘要

    我能夠演示有多種方法可以改進現(xiàn)有的獨立Jakarta EE TCK或以現(xiàn)代方式從完整的Jakarta CTS套件中創(chuàng)建新的。

    其中之一是將Arquillian添加到JUnit 4或TestNG測試套件中的一種行之有效的方法,并且期望所有實現(xiàn)都提供Arquillian容器來運行它們的測試。 如所示,只需幾行代碼,這很容易,編寫一個簡單的Arquillian擴展來定義所有測試的部署。

    但是,還有一種有趣的新方法可以使用JUnit 5,它是Java最先進的測試框架之一。 JUnit 5提供了足夠的擴展點,并且還允許為所有測試全局啟用擴展。 這意味著測試不需要包括啟用擴展所需的任何模板代碼。 正式發(fā)布后,實現(xiàn)者可以使用Arquillian通過現(xiàn)有的JUnit 5 Arquillian擴展來運行測試,也可以創(chuàng)建自己的JUnit 5擴展以將測試與其實現(xiàn)連接。 或者他們可以自由使用現(xiàn)有的非官方JUnit 5 Arquillian擴展,甚至可以根據(jù)需要進行修改,因為他們可以真正使用他們想要的任何東西。

    翻譯自: https://www.javacodegeeks.com/2020/04/possible-ways-to-use-arquillian-in-jakarta-ee-tcks.html

    tms tck

    總結(jié)

    以上是生活随笔為你收集整理的tms tck_在雅加达EE TCK中使用Arquillian的可能方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。