java编写应用程序_为您的Java应用程序编写数据驱动的测试
java編寫應(yīng)用程序
JUnit是一個功能非常強大的測試框架,它不僅為其用戶提供了編寫快速簡便的測試的功能,而且還為用戶提供了擴展它并使其按其期望的方式工作的機會。 在JUnit之上構(gòu)建了許多框架,這些框架為目標(biāo)受眾提供了各種易用的功能。
EasyTest是這樣一種框架,其主要重點是將數(shù)據(jù)驅(qū)動測試功能引入JUnit世界。
JUnit已經(jīng)有某種機制可以為用戶提供某種數(shù)據(jù)驅(qū)動的測試感覺。 但是它還不夠,也不干凈。 例如,用戶可以使用@Parameterized Runner編寫數(shù)據(jù)驅(qū)動測試,但使用Parameterized Runner會導(dǎo)致編寫許多不必要的代碼。
EasyTest試圖通過彌合JUnit已擁有的內(nèi)容和對用戶最方便的內(nèi)容之間的差距來解決問題。
在今天的帖子中,我將簡要概述什么是EasyTest,以及它如何從一種業(yè)余愛好演變?yōu)橐粋€成熟的項目,該項目已被許多公司和很多人使用。
入門
為了開始使用EasyTest,您要做的就是下載JAR文件。 您可以通過Maven做到這一點。 這是 Maven上最新的easytest-core JAR 的鏈接 。
下載JAR文件后,就可以編寫第一個數(shù)據(jù)驅(qū)動測試了。 這是使用EasyTest Core Module快速啟動和運行的分步指南。
步驟1 :您的pom文件中具有最新的EasyTest依賴項:
<dependency> <groupId>org.easetech</groupId> <artifactId>easytest-core</artifactId> <version>1.3.2</version> </dependency>步驟2 :使用測試方法創(chuàng)建一個簡單的測試類
@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庫提供了許多選項,可用于有效執(zhí)行測試。 例如,如果要并行執(zhí)行測試,則EasyTest提供一個Parallel注釋。 請查看此博客文章,以詳細(xì)了解并行注釋 。
這是另一個利用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中可用的功能。
在每個測試類上編寫帶有如此多注釋的測試類不僅耗時(典型的樣板代碼),而且還會引入難以跟蹤的錯誤。 因此,Easytest為您提供了一次定義和隨處使用功能的能力。 看下面的示例,與上面的示例相同,但更加簡潔:
另外,您可以在類級別使用TestPolicy批注將所有批注移動到單獨的可重用測試策略類。 這是一個例子。
@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);}在這里,我們沒有定義測試類的幾個批注,而是定義了一個TestPolicy Annotation ,它從測試類中抽象出了復(fù)雜的定義。
這是Policy類TestExcelDataPolicy樣子:
@DataLoader(filePaths = { "org/example/data/testExcelData.xls" })@Format(date='dd/MM/yyyy')@Report@Parallel(threads=5)public class TestExcelDataPolicy {}具有這樣的抽象意味著現(xiàn)在您可以在多個測試中重用您的測試策略類,從而大大減少了樣板代碼。
定義測試類后,下一步就是定義測試數(shù)據(jù)文件。
步驟3 :創(chuàng)建您的測試數(shù)據(jù)文件(對于上面的示例,這將是一個名為testExcelData.xls的Excel文件)
第一行的第一列表示需要為其提供數(shù)據(jù)的測試方法的名稱。 第一行的第二和第三列代表測試輸入?yún)?shù)的名稱。 第2和3行代表實際測試數(shù)據(jù)。
恭喜你 您剛剛編寫了第一個數(shù)據(jù)驅(qū)動測試。 當(dāng)使用Junit支持的IDE運行上述測試時,EasyTest將生成2個測試,每組數(shù)據(jù)一個。 這樣,您就不必編寫用于使用不同參數(shù)進(jìn)行測試的不同測試。
接下來,讓我們擴展該示例,并嘗試了解EasyTest的一些其他功能 。
了解EasyTest中的IoC容器支持
除了在測試類本身中定義/初始化testSubject(上述測試中的ItemService)之外,您還可以在配置文件中外部化初始化邏輯并在運行時注入正確的實例。 這樣做的好處是,您可以將初始化邏輯與測試邏輯分開,從而使測試更簡潔,更可維護(hù)。 其次,您也可以在其他測試中重用外部化的邏輯。 讓我們看看如何為上述測試做到這一點。
@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);}請注意,我們在上述測試中添加了兩件事:
TestConfigProvider批注采用一組配置提供程序類,從這些類可以加載Bean。 在上面的示例中,TestConfigProviderClass.class將如下所示:
public class TestConfigProviderClass {@TestBean public ItemService itemService(){return new RealItemService();}還要注意,我們使用標(biāo)準(zhǔn)Javax批注@Inject來注入測試Bean。 EASYTEST支持@Inject按類型,注射@Named沿@Inject按名稱注射。 除此之外,EasyTest還支持按字段名稱進(jìn)行注入。 EASYTEST也有自己的@Provided當(dāng)用戶沒有或不能使用javax注釋的情況下的注釋。
到此博客帖子結(jié)束了。 希望我能對EasyTest及其功能進(jìn)行有趣的介紹。 如果您有任何疑問或疑問或想為該項目做出貢獻(xiàn),請通過anujkumar@easetech.org與我聯(lián)系。
翻譯自: https://www.javacodegeeks.com/2015/08/writing-data-driven-tests-for-your-java-application.html
java編寫應(yīng)用程序
總結(jié)
以上是生活随笔為你收集整理的java编写应用程序_为您的Java应用程序编写数据驱动的测试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苹果电脑Mac删除系统自带的输入法教程如
- 下一篇: 万代《刀剑神域:异绊集结》试玩 9 月