當前位置:首頁 » 編程軟體 » 大牛純腳本

大牛純腳本

發布時間: 2025-09-28 00:55:35

❶ 有沒有技術大牛了解java開發,測試和CI的關

大家可能對如下情景比較熟悉:

  • 如果開發過SSH的web項目,啟動伺服器可能會比較慢,有的項目甚至需要1分多鍾,甚至更多,這個啟動時間的等待一般就浪費了;

  • 在開發項目時,有些功能比較復雜,當時覺得思路特清晰,但是過了一段時間後,自己也忘了,完善功能時頻繁出現bug,降低開發速度;

  • 在維護項目時,不知道自己修改的對還是不對,是否存在隱患;維護速度降下來了;

  • 如果開發一個很多人都使用的介面,典型的如用戶系統,要保證比如升級時向下兼容;

  • 在團隊間協作時,有時候只定義好介面,對方還沒有給實現,如何進行同步開發?

  • 如上問題,估計只要是個開發人員,都可能遇到過;如果此時有了單元/集成測試,那我們能很好的解決這些問題。(註:加下來如果沒有特殊情況,不刻意強調 單元測試/集成測試,即提到測試是指的是單元/集成測試)

    我從以下幾個方面介紹測試:

    1、為什麼需要測試?

    2、如何進行測試?

    3、測試有哪些好處?

    4、一切都需要測試嗎?

    1、為什麼需要測試?

    測試的目的是什麼?我的理解是:

  • 縮短發現問題到解決問題的速度;

  • 給程序一個修改後能驗證是否正確的保證;(回歸測試)

  • 如果是開源軟體,我們可以通過單元測試了解其是怎麼使用的;比如我之前通過cglib的單元測試學習過cglib的使用;

  • 所以如果你遇到如上問題,就需要寫測試。寫測試可能是為了自己(1、2);也可能是為了幫助別人(3)。

    2、如何進行測試?

    很多朋友不知道如何進行測試,其實測試很簡單,別把它想復雜了,按照自己的想法測試每個功能點是否正確即可。

    2.1、測試流程

    單元測試流程

  • <plugin>

  • <groupId>org.codehaus.mojo</groupId>

  • <artifactId>native2ascii-maven-plugin</artifactId>

  • <version>1.0-alpha-1</version>

  • <executions>

  • <execution>

  • <phase>generate-resources</phase>

  • <goals>

  • <goal>native2ascii</goal>

  • </goals>

  • <configuration>

  • <encoding>UTF-8</encoding>

  • <src>src/main/messages</src>

  • <dest>target/${project.artifactId}/WEB-INF/classes</dest>

  • <includes>messages.properties</includes>

  • </configuration>

  • </execution>

  • </executions>

  • <!--native2ascii使用的tools.jar-->

  • <dependencies>

  • <dependency>

  • <groupId>com.sun</groupId>

  • <artifactId>tools</artifactId>

  • <version>1.7.0</version>

  • <scope>system</scope>

  • <systemPath>${java.home}/../lib/tools.jar</systemPath>

  • </dependency>

  • </dependencies>

  • </plugin>

  • 如果使用mysql,埠只能是3306。

    如果想開埠測試,這是不允許的。

    如下是我項目中的一個配置.travis.yml,放到項目的根下即可:

    -----------------------------------

    language: java 語言

    env: 環境

    - DB=mysql 使用mysql

    jdk:

    - openjdk jdk使用openjdk

    mysql:

    database: es 資料庫名為es

    username: root 用戶名為root

    password : 密碼為空

    encoding: utf8 編碼為utf8

    install: 安裝時執行的腳本

    - mvn install -Dmaven.test.skip=true mvn安裝並跳過測試

    before_script: script之前執行的測試

    - cd web

    - mvn db:create 創建資料庫的mvn命令(此處使用了maven-db-plugin 插件)

    - mvn db:schema 創建腳本的mvn命令

    - mvn db:data 安裝數據的mvn命令

    - cd ..

    script: 測試時執行的腳步

    - cd common

    - mvn test 測試common子模塊

    - cd ..

    - cd web

    - mvn test -Pit 測試web子模塊,並指定使用it profile測試(即集成測試的配置,具體參考pom.xml中的profile/it)

    notifications: 觸發

    email: 測試完成後測試報告發到哪

    - [email protected]

    -----------------------------------

    持續集成不能修復代碼的錯誤,而是和單元測試一樣,縮短發現問題帶解決問題的時間,這樣可以提高開發效率,降低項目風險,提高項目的穩定性。而且尤其是團隊協作時,可以發現其他人的代碼是否對自己的代碼產生影響。

    到此我們利用單元測試+CI可以加速開發人員的開發速度。利用好單元測試和CI,不要純粹為了單元測試和CI而去做這些事情。

    本文沒有介紹TDD,TDD並不會那麼美好,我認為我們可以借鑒TDD的一些思想,但決不能迷信TDD,有時候,尤其如開發企業應用,先寫功能再寫測試可能效率更高,而且大部分時候是不需要TDD的。而且我也沒能在實際項目中獲取太多TDD的好處,但是我獲得了測試的好處。

    本文也沒有介紹測試覆蓋率,我認為不要一味的追求覆蓋率,有時候有的覆蓋率沒有任何意義。所以不要讓為了覆蓋率而覆蓋率拖慢了項目開發進度。

    正如stackoverflow上的一篇帖子《How deep are your unit tests?》上Kent Beck的回答:

    寫道

    老闆為我的代碼付報酬,而不是測試,所以,我對此的價值觀是——測試越少越好,少到你對你的代碼質量達到了某種自信。

    可以前往coolshell的「單元測試要做多細?」去得到一些經驗。

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:581
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:875
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:570
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:756
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:672
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:999
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:242
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:102
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:794
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:700