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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

为Java应用程序编写数据驱动的测试

發(fā)布時(shí)間:2023/12/3 java 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 为Java应用程序编写数据驱动的测试 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

JUnit是一個(gè)功能非常強(qiáng)大的測(cè)試框架,它不僅為其用戶提供了編寫快速簡(jiǎn)便的測(cè)試的功能,而且還為用戶提供了擴(kuò)展它并使其按其期望的方式工作的機(jī)會(huì)。 在JUnit之上構(gòu)建了許多框架,這些框架為目標(biāo)受眾提供了各種易用的功能。

EasyTest是這樣一種框架,其主要重點(diǎn)是將數(shù)據(jù)驅(qū)動(dòng)測(cè)試功能引入JUnit世界。

JUnit已經(jīng)有了某種機(jī)制,可以為用戶提供某種數(shù)據(jù)驅(qū)動(dòng)的測(cè)試感覺。 但是它還不夠,也不干凈。 例如,用戶可以使用@Parameterized Runner編寫數(shù)據(jù)驅(qū)動(dòng)測(cè)試,但使用Parameterized Runner會(huì)導(dǎo)致編寫許多不必要的代碼。

EasyTest試圖通過彌合JUnit已經(jīng)擁有的與用戶最方便的之間的差距來解決這些問題。

在今天的帖子中,我將簡(jiǎn)要介紹一下EasyTest是什么以及它如何從一種業(yè)余愛好演變?yōu)橐粋€(gè)成熟的項(xiàng)目,該項(xiàng)目已被許多公司和許多人使用。

入門

為了開始使用EasyTest,您要做的就是下載JAR文件。 您可以通過Maven做到這一點(diǎn)。 這是 Maven上最新的easytest-core JAR 的鏈接 。

下載JAR文件后,就可以編寫第一個(gè)數(shù)據(jù)驅(qū)動(dòng)測(cè)試了。 這是使用EasyTest Core Module快速啟動(dòng)和運(yùn)行的分步指南。

步驟1 :您的pom文件中具有最新的EasyTest依賴項(xiàng):

<dependency> <groupId>org.easetech</groupId> <artifactId>easytest-core</artifactId> <version>1.3.2</version> </dependency>

步驟2 :使用測(cè)試方法創(chuàng)建一個(gè)簡(jiǎn)單的測(cè)試類

@RunWith(DataDrivenTestRunner.class)@DataLoader(filePaths = { "testExcelData.xls" })public class TestExcelDataLoader{private ItemService itemService = new RealItemService();@Testpublic void getExcelTestData(@Param(name="libraryId")Float libraryId, @Param(name="itemId")Float itemId) {System.out.print("Executing getExcelTestData :");System.out.println("LibraryId is :" + libraryId + " and Item Id is :" + itemId);}

EasyTest庫(kù)提供了許多選項(xiàng),可用于有效執(zhí)行測(cè)試。 例如,如果您要并行執(zhí)行測(cè)試,則EasyTest提供并行注釋。 查看此博客文章,以詳細(xì)了解并行注釋 。

這是另一個(gè)利用EasyTest中可用功能的詳細(xì)示例:

@RunWith(DataDrivenTestRunner.class)@DataLoader(filePaths = { "testExcelData.xls" })@Format(date='dd/MM/yyyy')@Report@Parallel(threads=5)public class TestExcelDataLoader{@Duration(timeInMillis=1000)private ItemService itemService = new RealItemService();@Testpublic void getExcelTestData(@Param(name="libraryId")Float libraryId, @Param(name="itemId")Float itemId) {System.out.print("Executing getExcelTestData :");System.out.println("LibraryId is :" + libraryId + " and Item Id is :" + itemId);}

您可以查看源代碼的javadocs,以了解每種注釋的含義,還可以了解EasyTest中可用的功能。

在每個(gè)測(cè)試類上編寫帶有如此多注釋的測(cè)試類不僅耗時(shí)(典型的樣板代碼),而且還會(huì)引入難以跟蹤的錯(cuò)誤。 因此,Easytest為您提供了一次定義和隨處使用功能的能力。 看下面的示例,與上面的示例相同,但更簡(jiǎn)潔:

另外,您可以在類級(jí)別使用TestPolicy批注將所有批注移動(dòng)到單獨(dú)的可重用測(cè)試策略類。 這是一個(gè)例子。

@RunWith(DataDrivenTestRunner.class)@TestPolicy(TestExcelDataPolicy.class)public class TestExcelDataLoader{@Duration(timeInMillis=1000)private ItemService itemService = new RealItemService();@Testpublic void getExcelTestData(@Param(name="libraryId")Float libraryId, @Param(name="itemId")Float itemId) {System.out.print("Executing getExcelTestData :");System.out.println("LibraryId is :" + libraryId + " and Item Id is :" + itemId);}

在這里,我們沒有定義測(cè)試類的幾個(gè)注釋,而是定義了一個(gè)TestPolicy Annotation ,它從測(cè)試類中抽象出了復(fù)雜的定義。

這是Policy類TestExcelDataPolicy樣子:

@DataLoader(filePaths = { "org/example/data/testExcelData.xls" })@Format(date='dd/MM/yyyy')@Report@Parallel(threads=5)public class TestExcelDataPolicy {}

具有這樣的抽象意味著現(xiàn)在您可以在多個(gè)測(cè)試中重用您的測(cè)試策略類,從而大大減少了樣板代碼。

定義測(cè)試類后,下一步就是定義測(cè)試數(shù)據(jù)文件。

步驟3 :創(chuàng)建您的測(cè)試數(shù)據(jù)文件(對(duì)于上面的示例,這將是一個(gè)名為testExcelData.xls的Excel文件)
第一行的第一列表示需要為其提供數(shù)據(jù)的測(cè)試方法的名稱。 第一行的第二和第三列代表測(cè)試輸入?yún)?shù)的名稱。 第2和3行代表實(shí)際測(cè)試數(shù)據(jù)。

getExcelTestData itemId libraryId11567 91475null 0

恭喜你 您剛剛編寫了第一個(gè)數(shù)據(jù)驅(qū)動(dòng)測(cè)試。 當(dāng)使用Junit支持的IDE運(yùn)行上述測(cè)試時(shí),EasyTest將生成2個(gè)測(cè)試,每組數(shù)據(jù)一個(gè)。 這樣,您就不必編寫用于使用不同參數(shù)進(jìn)行測(cè)試的不同測(cè)試。

接下來,讓我們擴(kuò)展該示例,并嘗試了解EasyTest的一些其他功能 。

了解EasyTest中的IoC容器支持

除了在測(cè)試類本身中定義/初始化testSubject(上述測(cè)試中的ItemService)之外,您還可以在配置文件中外部化初始化邏輯并在運(yùn)行時(shí)注入正確的實(shí)例。 這樣做的好處是,您可以將初始化邏輯與測(cè)試邏輯分開,從而使您的測(cè)試更簡(jiǎn)潔,更可維護(hù)。 其次,您也可以在其他測(cè)試中重用外部化的邏輯。 讓我們看看如何為上述測(cè)試做到這一點(diǎn)。

@RunWith(DataDrivenTestRunner.class)@DataLoader(filePaths = { "testExcelData.xls" })@TestConfigProvider({TestConfigProviderClass.class})public class TestExcelDataLoader{@Injectprivate ItemService itemService;@Testpublic void getExcelTestData(@Param(name="libraryId")Float libraryId, @Param(name="itemId")Float itemId) {System.out.print("Executing getExcelTestData :");System.out.println("LibraryId is :" + libraryId + " and Item Id is :" + itemId);}

請(qǐng)注意,我們?cè)谏鲜鰷y(cè)試中添加了兩件事:

  • TestConfigProvider批注
  • 注入注解
  • TestConfigProvider批注采用一組配置提供程序類,從這些類可以加載Bean。 在上面的示例中,TestConfigProviderClass.class將如下所示:

    public class TestConfigProviderClass {@TestBean public ItemService itemService(){return new RealItemService();}

    還要注意,我們使用標(biāo)準(zhǔn)Javax批注@Inject來注入測(cè)試Bean。 EASYTEST支持@Inject按類型,注射@Named沿@Inject按名稱注射。 除此之外,EasyTest還支持按字段名稱進(jìn)行注入。 EASYTEST也有自己的@Provided當(dāng)用戶沒有或不能使用javax注釋的情況下的注釋。

    到此博客帖子結(jié)束了。 希望我能給您有趣的EasyTest及其功能介紹。 如果您有任何疑問或疑問或想為該項(xiàng)目做出貢獻(xiàn),請(qǐng)通過anujkumar@easetech.org與我聯(lián)系。

    翻譯自: https://www.javacodegeeks.com/2015/08/writing-data-driven-tests-for-your-java-application.html

    創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

    總結(jié)

    以上是生活随笔為你收集整理的为Java应用程序编写数据驱动的测试的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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