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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

并行运行单元测试

發(fā)布時(shí)間:2023/12/3 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 并行运行单元测试 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

大約是時(shí)候單元測試的開發(fā)人員能夠使用批注在Parallel中運(yùn)行測試。 在今天的博客文章中,我們將介紹如何使用Easytest提供的注釋使傳統(tǒng)的Junit測試并行運(yùn)行。 易測 是在JUnit之上構(gòu)建的測試框架,可讓您輕松編寫和維護(hù)測試。 它專注于為您的應(yīng)用程序編寫數(shù)據(jù)驅(qū)動(dòng)測試。

讓我們首先假設(shè)一個(gè)類ItemService具有方法2的方法:

  • 帶有2個(gè)參數(shù)Double itemId和String itemType的getItems。 API類如下所述。
  • updateItem接受一個(gè)I??tem實(shí)例并在數(shù)據(jù)庫中對(duì)其進(jìn)行更新。
  • public class ItemService {public List getItems (Double itemId , String itemType);public void updateItem (Item item);}

    為了簡化示例,我們將省略實(shí)現(xiàn)。

    讓我們看一下編寫并行單元測試的分步方法。

    步驟1:

    從Maven Central Repository下載EasyTest的最新版本(或1.2或更高版本) 。

    第2步:

    接下來,讓我們使用EasyTest批注和數(shù)據(jù)驅(qū)動(dòng)的測試方法為上述業(yè)務(wù)方法編寫一個(gè)簡單的單元測試。

    @RunWith(DataDrivenTestRunner.class) @DataLoader(filePaths="getItemData.csv") @TestConfigProvider(TestConfigProvider.class) public class ItemServiceTest {@Injectprivate ItemService itemService;@Beforepublic void before() {System.out.println("BEFORE");}@Testpublic List testGetItems(@Param(name="itemId")Double itemId , @Param(name="itemType")String itemType) {//Actual test conditions hereSystem.out.println("Run testGetItems");}@Testpublic void testUpdateItem(@Param(name="item") Item item) {//Actual test conditions hereSystem.out.println("Run testUpdateItem");}@Afterpublic void after() {System.out.println("AFTER");} }

    上面的示例使用EasyTest的現(xiàn)有功能,例如在測試文件中提供數(shù)據(jù),并使用CDI批注注入測試bean。 如果您想了解有關(guān)EasyTest中的@TestConfigProvider和依賴注入的更多信息,請(qǐng)參見我以前的博客文章。 如果您想進(jìn)一步了解如何使用EasyTest編寫數(shù)據(jù)驅(qū)動(dòng)測試,則可以訪問EasyTest的WIKI Pages 。

    現(xiàn)在,上面是運(yùn)行簡單的數(shù)據(jù)驅(qū)動(dòng)單元測試的示例。 以上所有測試將依次進(jìn)行串行測試。 假設(shè)每種測試方法在getItemData.csv文件中指定了兩組測試數(shù)據(jù),則在運(yùn)行上述測試時(shí),我們將在控制臺(tái)上獲得以下內(nèi)容:

    BEFORE Run testGetItems AFTERBEFORE Run testGetItems AFTERBEFORE Run testUpdateItem AFTERBEFORE Run testUpdateItem AFTER

    步驟3:

    接下來,讓上述測試并行運(yùn)行。 只需在類級(jí)別包含@Parallel批注,然后提供要運(yùn)行的線程數(shù)即可。 對(duì)于上述測試用例,我們將運(yùn)行兩個(gè)線程。

    @RunWith(DataDrivenTestRunner.class) @DataLoader(filePaths="getItemData.csv") @TestConfigProvider(TestConfigProvider.class) @Parallel(threads=2) public class ItemServiceTest {@Injectprivate ItemService itemService;@Beforepublic void before() {System.out.println("BEFORE");}@Testpublic List testGetItems(@Param(name="itemId")Double itemId , @Param(name="itemType")String itemType) {//Actual test conditions hereSystem.out.println("Run testGetItems");}@Testpublic void testUpdateItem(@Param(name="item") Item item) {//Actual test conditions hereSystem.out.println("Run testUpdateItem");}@Afterpublic void after() {System.out.println("AFTER");} }

    注意lass級(jí)別的@Parallel批注。

    運(yùn)行此測試時(shí),控制臺(tái)輸出看起來像這樣(運(yùn)行相同的測試時(shí)可能會(huì)有所不同):

    BEFORE BEFORE Run testGetItems BEFORE Run testUpdateItem AFTER Run testGetItems BEFORE AFTER Run testUpdateItem AFTER AFTER

    從上面的控制臺(tái)輸出中可以看到,測試是同時(shí)運(yùn)行的,這就是為什么看到這樣的分布式控制臺(tái)輸出的原因。

    結(jié)論

    在上面的示例中,我們看到了如何在Parallel中運(yùn)行測試。 同樣,當(dāng)使用Maven等構(gòu)建工具構(gòu)建測試時(shí),這些測試將并行運(yùn)行。 這對(duì)您具有成千上萬的單元測試并且它們需要幾分鐘的運(yùn)行時(shí)間的場景有很大的幫助。

    EasyTest正在使用命令行/系統(tǒng)參數(shù)方法來啟用/禁用并行功能。 敬請(qǐng)關(guān)注。

    參考: JavaWorld Blog博客上的JCG合作伙伴 Anuj Kumar 并行運(yùn)行單元測試 。

    翻譯自: https://www.javacodegeeks.com/2013/07/run-your-unit-tests-in-parallel.html

    總結(jié)

    以上是生活随笔為你收集整理的并行运行单元测试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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