国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

單元測(cè)試優(yōu)化:為什么要對(duì)程序進(jìn)行測(cè)試?測(cè)試有什么好處?

這篇具有很好參考價(jià)值的文章主要介紹了單元測(cè)試優(yōu)化:為什么要對(duì)程序進(jìn)行測(cè)試?測(cè)試有什么好處?。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

單元測(cè)試(Unit Testing)又稱為模塊測(cè)試, 是針對(duì)程序模塊(軟件設(shè)計(jì)的最小單位)來(lái)進(jìn)行正確性檢驗(yàn)的測(cè)試工作。 程序單元是應(yīng)用的最小可測(cè)試部件。簡(jiǎn)單來(lái)說(shuō),就是測(cè)試數(shù)據(jù)的穩(wěn)定性是否達(dá)到程序的預(yù)期。

我們?nèi)粘i_(kāi)發(fā)時(shí)可能在不經(jīng)意間寫(xiě)錯(cuò),如果等到最后階段去檢驗(yàn)項(xiàng)目成果時(shí),發(fā)現(xiàn)有錯(cuò)誤,這時(shí)候我們很難找到Bug的源頭在哪里。我們都知道,有可能一處出錯(cuò)會(huì)導(dǎo)致步步錯(cuò)的情況。

測(cè)試就在我們的上述說(shuō)法中,顯得尤為重要,當(dāng)我們做完項(xiàng)目的一個(gè)小模塊,先去測(cè)試一下這個(gè)小模塊是否正確或達(dá)到預(yù)期,如果錯(cuò)誤或者沒(méi)有達(dá)到預(yù)期就需要反復(fù)修改,直到正確或達(dá)到預(yù)期,也就是使用了單元測(cè)試。

單元測(cè)試的編碼規(guī)范一般涉及到以下內(nèi)容:

類名: 定義測(cè)試類,類名是由被測(cè)試類名Test構(gòu)成。例如:CalculatorTest;

包名:定義的測(cè)試類需要放在xxx.xxx.xxx.test包中。例如:package com.autodrive.test;

方法名: 測(cè)試方法的方法名有兩種定義方式test測(cè)試方法和測(cè)試方法。例如:testCheck和check;

返回值: 因?yàn)槲覀兊姆椒ㄖ皇窃陬愔袦y(cè)試,可以獨(dú)立運(yùn)行,所以不需要處理任何返回值,所以這里使用void。例如:public void check();

參數(shù)列表: 因?yàn)槲覀兊姆椒ㄊ怯脕?lái)測(cè)試的,至于參數(shù)列表的傳入是沒(méi)有必要的。我們?cè)跍y(cè)試的時(shí)候自行傳入需要的參數(shù)測(cè)試即可。所以在此參數(shù)列表為空。例如:例如:public void check();

@Test注解: 測(cè)試是需要運(yùn)行來(lái)完成的。如果我們只有一個(gè)main方法,顯然在結(jié)構(gòu)上還是需要我們?nèi)プ⑨尩魷y(cè)試過(guò)的。解決此問(wèn)題這里我們需要在測(cè)試方法上方加@Test注解來(lái)完成測(cè)試,只要是加該注解的方法,可以單獨(dú)運(yùn)行此方法來(lái)完成測(cè)試。

IDEA快捷導(dǎo)入Junit4、5: 使用IDEA的小伙伴,你們的福音來(lái)了。我們可以先創(chuàng)建測(cè)試類和方法,然后在測(cè)試方法上方加入@Test注解,此時(shí)IDEA顯示的@Test注解是飄紅的,這時(shí)候我們使用Alt + Enter組合鍵來(lái)打開(kāi)導(dǎo)入Junit單元測(cè)試列表,然后再選擇Junit4或者Junit5確定。

在SpringBoot往往存在單元測(cè)試用到如下的注解與寫(xiě)法:

@RunWith(SpringRunner.class)

@SpringBootTest(classes = Application.class)

@Transactional

@Rollback(true) // 事務(wù)自動(dòng)回滾,默認(rèn)是true??梢圆粚?xiě)

public class NoticeServiceTest {

@Autowired

private NoticeService noticeService;

@Test

public void sayHello() {

helloService.sayHello("zhangsan");

}

}

在上面這個(gè)例子中,@SpringBootTest啟動(dòng)了SpringBoot環(huán)境,掃描應(yīng)用程序的spring配置,并構(gòu)建完整的Spring Context,其classes = Application.class啟動(dòng)了整個(gè)項(xiàng)目。通過(guò)@SpringBootTest我們可以指定啟動(dòng)類,或者給@SpringBootTest的參數(shù)webEnvironment賦值為SpringBootTest.WebEnvironment.RANDOM_PORT,這樣就會(huì)啟動(dòng)web容器,并監(jiān)聽(tīng)一個(gè)隨機(jī)的端口,同時(shí),為我們自動(dòng)裝配一個(gè)TestRestTemplate類型的bean來(lái)輔助我們發(fā)送測(cè)試請(qǐng)求。

@Transactional表明調(diào)用數(shù)據(jù)庫(kù)并作事務(wù)處理;@RunWith(SpringRunner.class)聲明在Spring的環(huán)境中進(jìn)行單元測(cè)試,這樣Spring的相關(guān)注解就會(huì)被識(shí)別并起效,而@Autowired啟動(dòng)了Spring。

當(dāng)項(xiàng)目使用了@Component注解,在SpringBoot項(xiàng)目啟動(dòng)的時(shí)候就會(huì)跟著實(shí)例化/啟動(dòng),這個(gè)@Component注解的類里有多線程方法,隨著啟動(dòng)類中定義的ApplicationStartup類啟動(dòng)了,那么在你執(zhí)行單元測(cè)試的時(shí)候,由于多線程任務(wù)的影響,就可能對(duì)你的數(shù)據(jù)庫(kù)造成了數(shù)據(jù)修改,即使你使用了事務(wù)回滾注解。

高效的單元測(cè)試應(yīng)該脫離數(shù)據(jù)庫(kù),以滿足快速啟動(dòng)完成測(cè)試、支持服務(wù)間調(diào)用的需求。可以通過(guò)如下幾點(diǎn)來(lái)對(duì)上述例子進(jìn)行優(yōu)化:

1. 啟動(dòng)Spring會(huì)讓run->Junit Test的時(shí)候程序變慢,這是每次運(yùn)行單元測(cè)試都很慢的原因之一。然后單元測(cè)試是只針對(duì)某一個(gè)類的方法來(lái)測(cè),啟動(dòng)Spring很多時(shí)候是多余的,所以我們只需要對(duì)應(yīng)的實(shí)體類實(shí)例就夠了。在需要注入bean的時(shí)候,我們直接new。

private NoticeService noticeService = new NoticeService();

2. @SpringBootTest是在SpringBoot項(xiàng)目上使用的,它在@SpringBootContextLoader的基礎(chǔ)上,配置文件屬性的讀取,會(huì)讀取、解析一些項(xiàng)目配置文件,還會(huì)連接數(shù)據(jù)庫(kù),然后如果啟動(dòng)類又帶有別的啟動(dòng)類、@Component、多線程等,而單元測(cè)試很多時(shí)候可以避免啟動(dòng)SpringBoot,減少啟動(dòng)所耗費(fèi)的大量時(shí)間,即不使用@SpringBootTest注解。

3. 應(yīng)當(dāng)使用斷言來(lái)判斷單元測(cè)試結(jié)果是否符合預(yù)期。

4. @RunWith 在JUnit中有很多個(gè)Runner,他們負(fù)責(zé)調(diào)用具體測(cè)試代碼,每一個(gè)Runner都有各自的特殊功能,你要根據(jù)需要選擇不同的Runner來(lái)運(yùn)行你的測(cè)試代碼,且一般都是使用SpringRunner.class。如果我們只是簡(jiǎn)單的做普通Java測(cè)試,不涉及Spring Web項(xiàng)目,可以省略@RunWith注解,這樣系統(tǒng)會(huì)自動(dòng)使用默認(rèn)Runner來(lái)運(yùn)行你的代碼。

5.單元測(cè)試可以通過(guò)Mock數(shù)據(jù)的方式避開(kāi)對(duì)數(shù)據(jù)庫(kù)的調(diào)用,減少很多數(shù)據(jù)庫(kù)連接的時(shí)間。Mock是模擬一切操作數(shù)據(jù)庫(kù)的步驟,不執(zhí)行任何SQL,我們直接模擬這句操作數(shù)據(jù)庫(kù)的代碼執(zhí)行會(huì)是成功的,而且可以模擬任何返回值,主要有兩個(gè)注解。只要是本地的,自己寫(xiě)的bean,都可以使用@MockBean,它會(huì)把所有操作數(shù)據(jù)庫(kù)的方法模擬。如果是沒(méi)有返回值的方法,我們就可以不管。如果是有返回值的方法,我們可以給它返回各自我們需要模擬的值。如果是我們本地,調(diào)用別的公司,別的地方給我們寫(xiě)好的接口,不是操作我們自己的數(shù)據(jù)庫(kù),是我們寫(xiě)好入?yún)?,別人給我們返回值,我們就用@SpyBean。

Mock所需依賴如下:

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-test</artifactId>

<scope>test</scope>

</dependency>

通過(guò)以上優(yōu)化,可以大大縮短我們單測(cè)的時(shí)間,提高我們開(kāi)發(fā)效率。

?

【整整200集】超超超詳細(xì)的Python接口自動(dòng)化測(cè)試進(jìn)階教程合集,真實(shí)模擬企業(yè)項(xiàng)目實(shí)戰(zhàn)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-642591.html

到了這里,關(guān)于單元測(cè)試優(yōu)化:為什么要對(duì)程序進(jìn)行測(cè)試?測(cè)試有什么好處?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Windows 程序開(kāi)機(jī)自啟動(dòng)速度優(yōu)化,為什么騰訊會(huì)議自啟動(dòng)速度那么高?

    Windows 程序開(kāi)機(jī)自啟動(dòng)速度優(yōu)化,為什么騰訊會(huì)議自啟動(dòng)速度那么高?

    目錄 一、問(wèn)題的說(shuō)明和定義 二、問(wèn)題的分析 1.問(wèn)題初步分析 2.詳細(xì)的分析: 2.1Windows常見(jiàn)的自啟動(dòng)方式 2.2Windows常見(jiàn)的自啟動(dòng)方式的細(xì)節(jié)分析 三、問(wèn)題的解決方案 1、為什么騰訊會(huì)議Rooms那么快 2.我們是否可以跟騰訊會(huì)議一樣快 這兩天有個(gè)優(yōu)化項(xiàng)需要做個(gè)技術(shù)調(diào)研,就是我們

    2024年02月02日
    瀏覽(25)
  • 為什么有35歲「職業(yè)危機(jī)」的程序員不轉(zhuǎn)做測(cè)試呢?

    為什么有35歲「職業(yè)危機(jī)」的程序員不轉(zhuǎn)做測(cè)試呢?

    針對(duì)這個(gè)問(wèn)題,我想我還是有點(diǎn)發(fā)言權(quán)的,雖然我不是做開(kāi)發(fā),但是我老公是妥妥的程序員一枚,而我又是干測(cè)試的,所以我也會(huì)問(wèn)他,為啥不轉(zhuǎn)測(cè)試呀,測(cè)試相對(duì)不累,且工資也高于市面很多工作,即輕松又能賺錢(qián),何樂(lè)而不為? 和老公交流過(guò)這個(gè)問(wèn)題。交流后,我覺(jué)得要

    2024年02月10日
    瀏覽(30)
  • 為什么要進(jìn)行數(shù)據(jù)治理

    ????????數(shù)據(jù)治理是個(gè)大話題,包含的環(huán)節(jié)也非常多,從數(shù)據(jù)集成、數(shù)據(jù)質(zhì)量、數(shù)據(jù)資產(chǎn)、數(shù)據(jù)安全、數(shù)據(jù)標(biāo)準(zhǔn)各個(gè)環(huán)節(jié)。數(shù)據(jù)治理最近越來(lái)越受到企業(yè)的關(guān)注,為什么越來(lái)越多的企業(yè)開(kāi)始進(jìn)行數(shù)據(jù)治理呢?因?yàn)樗麄冮_(kāi)始意識(shí)到了數(shù)據(jù)治理的價(jià)值。本質(zhì)上來(lái)講數(shù)據(jù)治理的價(jià)

    2024年02月09日
    瀏覽(27)
  • 為什么說(shuō)過(guò)早優(yōu)化是萬(wàn)惡之源?

    為什么說(shuō)過(guò)早優(yōu)化是萬(wàn)惡之源?

    ??Donald Knuth(高德納)是一位計(jì)算機(jī)科學(xué)界的著名學(xué)者和計(jì)算機(jī)程序設(shè)計(jì)的先驅(qū)之一。他被譽(yù)為計(jì)算機(jī)科學(xué)的“圣經(jīng)”《計(jì)算機(jī)程序設(shè)計(jì)藝術(shù)》的作者,提出了著名的“大O符號(hào)”來(lái)描述算法的時(shí)間復(fù)雜度和空間復(fù)雜度,開(kāi)發(fā)了TeX系統(tǒng)用于排版科技文獻(xiàn),獲得過(guò)圖靈獎(jiǎng)、馮

    2023年04月27日
    瀏覽(41)
  • 架構(gòu)師進(jìn)階之路 - 架構(gòu)優(yōu)化為什么難

    架構(gòu)師進(jìn)階之路 - 架構(gòu)優(yōu)化為什么難

    ? ? ? ? 目錄 業(yè)務(wù)迭代和技術(shù)優(yōu)化難以兼顧 缺少“上帝”視角思維 系統(tǒng)架構(gòu)腐化 缺少架構(gòu)師視角 系統(tǒng)迭代機(jī)制 設(shè)計(jì)規(guī)范把控 最近在組織團(tuán)隊(duì)內(nèi)的系統(tǒng)架構(gòu)優(yōu)化,總而言之就是難,至于為什么難我這邊總結(jié)了以下六個(gè)方面,記錄一下自己的架構(gòu)師進(jìn)階之路吧。?? 重要的事

    2024年02月12日
    瀏覽(22)
  • 什么是模塊化?為什么要進(jìn)行模塊化開(kāi)發(fā)?

    模塊化是一種軟件開(kāi)發(fā)的設(shè)計(jì)模式,它將一個(gè)大型的軟件系統(tǒng)劃分成多個(gè)獨(dú)立的模塊,每個(gè)模塊都有自己的功能和接口,并且能夠與其他模塊獨(dú)立地工作。 ?先來(lái)一段八股文 模塊化開(kāi)發(fā)可以帶來(lái)以下好處: 提高代碼的復(fù)用性:模塊化可以將代碼劃分成可重用的部分,降低代

    2023年04月12日
    瀏覽(31)
  • 為什么要做黑盒測(cè)試?黑盒測(cè)試有什么作用?

    為什么要做黑盒測(cè)試?黑盒測(cè)試有什么作用?

    對(duì)于軟件測(cè)試的從業(yè)者來(lái)說(shuō),黑盒測(cè)試是十分重要的測(cè)試方式,它可以彌補(bǔ)白盒測(cè)試檢查不到的部分??赡軇倓?cè)腴T(mén)的測(cè)試小白,對(duì)于為什么要做黑盒測(cè)試?黑盒測(cè)試有什么作用?仍然抱有很大的疑問(wèn)。下面小編就來(lái)從黑盒測(cè)試的概念、作用和優(yōu)點(diǎn),帶領(lǐng)大家全面認(rèn)識(shí)黑盒測(cè)

    2024年02月05日
    瀏覽(24)
  • Doris架構(gòu)包含哪些技術(shù)?為什么進(jìn)行技術(shù)整合?

    Doris架構(gòu)包含哪些技術(shù)?為什么進(jìn)行技術(shù)整合?

    Doris主要整合了Google Mesa(數(shù)據(jù)模型),Apache Impala(MPP Query Engine)和Apache ORCFile (存儲(chǔ)格式,編碼和壓縮)的技術(shù)。 為什么要將這三種技術(shù)整合? Mesa可以滿足我們?cè)S多存儲(chǔ)需求的需求,但是Mesa本身不提供SQL查詢引擎。 Impala是一個(gè)非常好的MPP SQL查詢引擎,但是缺少完美的分布式存儲(chǔ)引

    2024年02月11日
    瀏覽(29)
  • URL編碼揭秘:為什么要進(jìn)行URL編碼?

    URL編碼揭秘:為什么要進(jìn)行URL編碼?

    URL(Uniform Resource Locator,統(tǒng)一資源定位符)是互聯(lián)網(wǎng)上資源地址的唯一標(biāo)識(shí)符。在網(wǎng)絡(luò)請(qǐng)求和數(shù)據(jù)傳輸過(guò)程中,URL編碼起著至關(guān)重要的作用。 URL編碼解碼 | 一個(gè)覆蓋廣泛主題工具的高效在線平臺(tái)(amd794.com) https://amd794.com/urlencordec 一、URL編碼的起源與發(fā)展 URL編碼起源于1960年代

    2024年02月03日
    瀏覽(19)
  • 為什么需要自動(dòng)化測(cè)試

    為什么需要自動(dòng)化測(cè)試

    自動(dòng)化的優(yōu)勢(shì): 1.自動(dòng)化可以代替手工大量地重復(fù)的工作,測(cè)試可以把大量的時(shí)間放在用例設(shè)計(jì)和新功能上邊 2.自動(dòng)化可以大量提升回歸測(cè)試效率,特別適合敏捷開(kāi)發(fā) 3.自動(dòng)化可以大量地利用無(wú)人值守的時(shí)間去執(zhí)行用例,特別適合非工作是愛(ài)你執(zhí)行測(cè)試,工作時(shí)間分析測(cè)試用

    2024年02月13日
    瀏覽(21)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包