如何集成和使用EclEmma插件来获得良好的Junit覆盖率
你好朋友,
如果編寫好的代碼很重要,那么編寫覆蓋所有業務邏輯的優良Junit測試用例也同樣重要。通過編寫覆蓋業務邏輯的Junit測試用例,我們實際上確保代碼的每種方法都能正常工作按照預期進行,因此減少了在軟件開發的后期階段中獲取錯誤的機會。
在本教程中,我們將看到如何使用EclEmma插件來檢查Java代碼的代碼覆蓋率,從而可以確保通過Junit測試用例具有良好的覆蓋率。
步驟1 :
轉到以下鏈接:
https://www.eclemma.org/
第2步 :
單擊左側菜單上的安裝->下載選項。
第三步:
右鍵單擊最頂部(最新)鏈接(在撰寫本文時,它是“ eclemma-3.1.2.zip”),然后將Zip保存在您的計算機上。
第四步 :
將zip提取到您選擇的相同位置。
步驟5:
復制提取的文件夾并轉到eclipse文件夾(安裝了eclipse的位置),然后將此提取的文件夾粘貼到eclipse文件夾內的dropins文件夾中。
步驟6:
重新啟動Eclipse。
步驟7:
右鍵單擊項目文件夾,然后選擇Coverage As-> JUnit Test,然后單擊Coverage按鈕,它將運行所有測試用例并檢查覆蓋率。
現在,因為在此階段,我們在服務層的代碼中沒有任何測試用例,所以我們獲得了0.0%的覆蓋率,并且所有代碼行都顯示為紅色,這意味著Junit測試中未覆蓋這些行。
一般來說 :
如果看到綠色,則表示Junit測試中覆蓋了所有這些線條。
如果看到紅色,則表示Junit測試未覆蓋所有這些行。
如果看到黃色,則表示您的測試已經通過了這些行,但是并未涵蓋所有的測試用例。
接下來,我們將創建一個Spring Boot項目,在其中添加一些代碼,然后逐步編寫測試用例,并查看EclEmma插件如何提供代碼覆蓋率。
第八步:
讓我們通過創建一個簡單的名稱為“ eclemma”的Spring Boot項目來了解它的工作原理。請按照我的教程“ 如何使用Spring Initializer創建Spring Boot項目來創建Spring Boot項目”。
步驟9:
在新創建的項目中,按照以下屏幕快照創建具有名稱的包和類
第十步:
這是CalculatorService的源代碼
package com.blogspot.javasolutionsguide.eclmma.service; /** * @author JavaSolutionsGuide * */ public interface CalculatorService { int add( int a , int b); ?int subtract( int a, int b); } <br> <br> <br>這是CalcualtorServiceImpl的源代碼
package com.blogspot.javasolutionsguide.eclemma.service.impl; /** * @author javaSolutionsGuide * */ public class CalculatorServiceImpl { ?public int add( int a , int b) { int c = a + b; return c; } public int subtract( int a, int b) { int c = a - b; return c; } }步驟11:
因此,首先我們將只為add()方法編寫測試用例,然后運行Eclemma coverage
這是add()方法的JUnit測試用例的代碼:
package com.blogspot.javasolutionsguide.eclEmma.service.impl; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import com.blogspot.javasolutionsguide.eclemma.service.impl.CalculatorServiceImpl; /** * @author JavaSolutionsGuide * */ @RunWith (SpringRunner. class ) @SpringBootTest (classes = {CalculatorServiceImpl. class }) public class CalculatorServiceImplTest { ?@Autowired private CalculatorServiceImpl calculatorService; ??@Test public void add_for_givenTwoInteger_shouldReturn_sumOfTwo() { Assert.assertEquals( "Test case to check if add returns sum of two give positive numbers" , 3 , calculatorService.add( 1 , 2 )); } ? } <br> <br> <br>第十二步:
現在,讓我們再次運行EclEmma Coverage并查看結果:
可以看到,CalculatorServiceImpl類的覆蓋率從0.0%增加到60%,并且運行覆蓋率后,add()方法的代碼行現在變為綠色,這意味著這些行已被Junit測試覆蓋。
步驟13:
同樣,我們將為減法編寫所有測試用例并查看覆蓋率。
在CalculatorServiceImplTest.java中添加以下測試用例:
@Test public void subtract_for_givenTwoInteger_shouldReturn_differenceOfTwo() { Assert.assertEquals( "Test case to check if subtract returns sum of two give positive numbers" , 1 , calculatorService.subtract( 2 , 1 )); }正如我們現在看到的,CalculatorServiceImpl類的覆蓋率是100%。
摘要
因此,在本教程中,我們學習了如何使用EclEmma插件查看您代碼的Junit測試覆蓋率?;贘unit代碼覆蓋率報告,我們可以找到Junit覆蓋了我們代碼的哪些部分,而仍然左,然后我們可以為未發現的代碼行編寫更多的測試用例,這將確保我們已通過Junit涵蓋了所有必需的代碼行,從而提高了代碼質量。
如果您喜歡閱讀本文,請與您認為有幫助的朋友,同事分享。
翻譯自: https://www.javacodegeeks.com/2019/08/integrate-use-eclemma-plugin-having-good-junit-coverage.html
總結
以上是生活随笔為你收集整理的如何集成和使用EclEmma插件来获得良好的Junit覆盖率的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 通心粉用冷水还是热水煮 通心粉的正确煮法
- 下一篇: java jax-rs_在Java EE