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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用junit做其他事情

發(fā)布時間:2023/12/3 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用junit做其他事情 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

junit!=單元測試

Junit是Java單元測試框架。 通常,我們將其用于單元測試,但是很多時候我們也使用它來執(zhí)行集成測試。 主要區(qū)別在于,單元測試可測試單個單元,而集成測試則可測試不同類如何協(xié)同工作。 這樣,集成測試可以覆蓋更長的執(zhí)行鏈。 這意味著它們可能比單元測試發(fā)現(xiàn)更多的錯誤,但同時它們通常運行更長的時間,并且如果測試失敗,則更難定位錯誤。 如果您(作為開發(fā)人員)意識到這些差異,那么使用junit執(zhí)行非單元測試就沒有錯。

當(dāng)使用junit框架執(zhí)行系統(tǒng)測試時,我已經(jīng)在生產(chǎn)代碼中看到了示例,其中測試的執(zhí)行鏈包括通過網(wǎng)絡(luò)進行的外部服務(wù)調(diào)用。 Junit只是一種工具,因此,即使您知道其缺點,也沒有本質(zhì)上的問題。 但是,在實際情況下,junit測試的執(zhí)行是在正常的maven測試階段執(zhí)行的,并且一旦外部服務(wù)中斷,代碼就無法構(gòu)建。 這很不好,因為清楚地表明開發(fā)人員在創(chuàng)建代碼時并未意識到包括外部服務(wù)和構(gòu)建過程在內(nèi)的全局情況。

說完這些之后,讓我告訴您一個不同的故事,稍后再加入這兩個主題。

我們說語言...很多

大多數(shù)時候,我們的程序都有用戶界面。 該界面包含文本,通常使用不同的語言。 通常以目標(biāo)代碼為英文和當(dāng)?shù)卣Z言。 文本文字通常是外部化的,存儲在“屬性”文件中。 對于多種語言,我們?yōu)槊糠N語言都有單獨的屬性文件,每種屬性文件都為id定義文字文本。

例如我們有文件

messages-de.properties messages-fr.properties messages-en.properties messages-pl.properties messages.properties

在Java代碼中,我們通過Spring MessageSource調(diào)用來訪問它們

String label = messageSource.getMessage("my.label.name",null,"label",locale);

我們,程序員有點懶

當(dāng)我們沒有一些文本翻譯時,問題就來了。 用不同語言指定標(biāo)簽實際文本的工作不屬于程序員。 程序員是精通Java,C和其他編程語言的人,但是當(dāng)談到自然語言時,他們并不那么光彩。 我們大多數(shù)人不會說所有需要的語言。 有人負(fù)責(zé)翻譯文本。 通常,不同的人使用不同的語言。 其中一些工作速度更快,另一些工作速度較慢,編碼只是迫不及待準(zhǔn)備好翻譯。 在最終翻譯可用之前,我們使用臨時字符串。

所有臨時解決方案都將成為最終解決方案。

臨時字符串(只是英文版)進入了發(fā)行版。

流程和紀(jì)律:失敗

為了避免這種情況,我們實施了一個流程。 我們?yōu)槊糠N翻譯打開了一個Jira問題。 翻譯準(zhǔn)備就緒后,它便會附在問題上。 當(dāng)將其編輯到屬性文件中并提交到git時,問題已關(guān)閉。 如此沉重的負(fù)擔(dān)和開銷使程序員為此放慢了速度,而紀(jì)律不明的程序員只是沒有遵循該過程。 通常這是一個壞主意。

我們得出的結(jié)論是,不轉(zhuǎn)換為屬性文件并不是真正的大問題。 問題是不知道它丟失并創(chuàng)建發(fā)行版。 因此,我們需要一個過程在發(fā)布之前檢查屬性文件的正確性。

光路過程與控制

手動檢查會很麻煩。 我們創(chuàng)建了junit測試,比較了不同的語言文件,并檢查了另一個語言文件中是否沒有鍵,并且這些值與默認(rèn)的英語版本不相同。 每次發(fā)布項目時都要執(zhí)行junit測試。 然后我們意識到其中一些值確實與英文版本相同,因此我們開始在語言文件的第一個位置使用字母“ X”來表示等待實際翻譯值替換的標(biāo)簽。 在這一點上,有人建議可以將junit測試替換為簡單的“ grep”。 幾乎是事實,只是我們?nèi)匀幌Ml(fā)現(xiàn)丟失的鍵并在發(fā)布過程中自動測試運行。

總結(jié)和總結(jié)

Junit框架旨在執(zhí)行單元測試,但是框架不僅可以用于其設(shè)計目的,而且可以并且將被使用。 (附帶說明:對于任何工具,實際上都是正確的,無論是像錘子一樣簡單,還是像Java接口中的默認(rèn)方法一樣復(fù)雜。)

您可以使用junit執(zhí)行可以在構(gòu)建和/或發(fā)布的測試階段執(zhí)行的任務(wù)。

  • 任務(wù)應(yīng)該快速執(zhí)行,因為執(zhí)行時間會增加構(gòu)建/發(fā)布周期。
  • 不應(yīng)依賴外部資源,尤其是通過網(wǎng)絡(luò)可訪問的外部資源,
    因為這些故障可能還會導(dǎo)致構(gòu)建過程失敗。
  • 如果某些內(nèi)容對于構(gòu)建不可接受,請使用junit api發(fā)出失敗信號。 不要只寫警告。 沒有人閱讀警告。

翻譯自: https://www.javacodegeeks.com/2015/02/using-junit-something-else.html

總結(jié)

以上是生活随笔為你收集整理的使用junit做其他事情的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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