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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

构建忽略测试_分类测试以减少构建时间

發布時間:2023/12/3 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 构建忽略测试_分类测试以减少构建时间 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

構建忽略測試

在繼續本文的主要內容之前,讓我們先進行一些定義。

單元測試

單元測試是小型的(測試一個用例或一個單元),在內存中運行(不與數據庫,消息隊列等交互),可重復且快速的測試。 對于我們的對話,讓我們將其限制為開發人員編寫的基于JUnit的測試用例,以檢查其各自的代碼段。

整合測試

集成測試更大(測試一個流程或組件集成),不一定只在內存中運行(與數據庫,文件系統,消息隊列等交互),肯定較慢,并且不一定可重復(因為結果可能會更改)以防萬一,例如在數據庫中做了一些更改)。

為什么這種差異化很重要?

在敏捷編程中,基本概念之一是每隔一段時間(一天在開發人員盒中多次)運行單元測試,并強制集成測試每天運行一次(在連續集成服務器上而不是在開發人員盒上)。 。 請注意,開發人員應該能夠在需要時運行集成測試,這僅僅是因為它與單元測試是分開的,因此,開發人員現在可以選擇不在每次運行測試時都運行集成測試。

這種靈活性究竟有何幫助?

  • 開發人員的構建頻率更高。 在敏捷世界中,這意味著開發人員會更頻繁地運行單元測試(每天通常運行幾次)。
  • 開發人員可以更快地了解錯誤,并減少浪費的時間來編碼損壞的代碼庫。 這意味著節省時間和金錢。
  • 修復錯誤更容易,更快。 考慮到構建的頻率,可以提交較少數量的“違規代碼”,因此更容易將bug歸零并進行修復。
  • 最后但并非最不重要的一點是,任何進行過任何專業編碼的人都將證明,雖然偶爾可以休息10分鐘有助于提高編碼效率,但是沒有什么比等待一個小時的構建更有效地殺死編碼者的創造力了。 對士氣的影響是無形的,但卻是巨大的。
  • 我到底該如何減少構建時間?

    沒有一個適合所有人的尺碼(從來沒有)。 縮短構建和發布時間的確切可執行步驟將是許多變量的因素,其中包括產品的技術堆棧(Java,DotNet,php),構建和發布技術(批處理文件,Ant,Maven)以及許多其他因素。

    對于Java,Maven和JUnit組合……

    讓我們首先使用Maven創建一個簡單的Java應用程序來演示這種情況。

    \ MavenCommands.bat

    ECHO OFF REM ============================= REM Set the env. variables. REM ============================= SET PATH=%PATH%;C:\ProgramFiles\apache-maven-3.0.3\bin; SET JAVA_HOME=C:\ProgramFiles\Java\jdk1.7.0REM ============================= REM Create a simple java application. REM ============================= call mvn archetype:create ^-DarchetypeGroupId=org.apache.maven.archetypes ^-DgroupId=org.academy ^-DartifactId=app001 pause

    如果運行此批處理文件,則將從為您準備好的標準Java應用程序開始。

    默認的Java應用程序不附帶最新的JUnit。 您可能想要更改Maven配置以添加最新的JUnit。

    \ pom.xml

    [...]4.10[...]junitjunit${junit.version}test

    現在,繼續并添加一個JUnit測試類。

    /app001/src/test/java/org/academy/AppTest.java

    public class AppTest {private final static Logger logger = LoggerFactory.getLogger(AppTest.class);@Test public void smallAndFastUnitTest() {logger.debug("Quick unit test. It is not expected to interact with DB etc.");assertTrue(true); }@Test @Category(IntegrationTest.class) public void longAndSlowIntegrationTest() {logger.debug("Time consuming integration test. It is expected to interact with DB etc.");assertTrue(true); } }

    您可能會注意到有一個IntegrationTest.class標記。 您還必須創建此類。

    /app001/src/test/java/org/academy/annotation/type/IntegrationTest.java

    public interface IntegrationTest {// Just a marker interface. }

    創建標記接口并注釋您的測試方法(或類,如果您愿意的話)是您在代碼中要做的全部工作。

    現在,剩下要做的就是告訴Maven僅在集成測試階段運行“集成測試”。 這意味著開發人員在大多數情況下可以選擇僅運行單元測試(與數據庫,隊列等隔離??的快速測試)。 持續集成服務器(即Hudson(或類似產品))將運行單元測試和集成測試(由于預期它們將與數據庫等交互,因此運行速度較慢),并且可能在一夜之間發生。

    因此,這是您的操作方式。

    /pom.xml

    org.apache.maven.pluginsmaven-surefire-plugin2.12org.apache.maven.surefiresurefire-junit472.12-XX:-UseSplitVerifierorg.academy.annotation.type.IntegrationTest

    這意味著開發人員只需使用一根襯管就可以運行所有單元測試。

    mvn clean test

    這將不會運行任何注釋為集成測試的測試。

    對于集成測試,請添加以下內容。

    /pom.xml

    maven-failsafe-plugin2.12org.apache.maven.surefiresurefire-junit472.12org.academy.annotation.type.IntegrationTestintegration-test**/*.class

    這意味著哈德森或開發人員(如果他選擇的話)可以通過一個命令來運行所有測試,單元和集成。

    mvn clean verify

    當然,如果您選擇全部進行編譯,運行單元測試,打包,運行集成測試和部署,那么也可以使用單行命令來完成。

    mvn clean deploy

    而已。 您已朝著更快的構建和更敏捷的工作方式邁出了一步。 快樂的編碼。

    進一步閱讀

    • 也可以通過Javalobby的此鏈接獲得本文的一個版本-稍作編輯。
    • 這是另一篇文章 ,涉及使用相同技術的類似主題。

    參考:對 測試進行分類以減少構建時間。 從我們的JCG合作伙伴 Partho在Tech for Enterprise博客上獲得。


    翻譯自: https://www.javacodegeeks.com/2012/07/categorize-tests-to-reduce-build-time.html

    構建忽略測試

    總結

    以上是生活随笔為你收集整理的构建忽略测试_分类测试以减少构建时间的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。