day2-注解與測(cè)試_第1頁(yè)
day2-注解與測(cè)試_第2頁(yè)
day2-注解與測(cè)試_第3頁(yè)
day2-注解與測(cè)試_第4頁(yè)
day2-注解與測(cè)試_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、注解與測(cè)試1 課程介紹Ø 1.認(rèn)識(shí)與理解注解Ø 2.JDK四大內(nèi)置注解Ø 3.JDK的元注解Ø 4.注解的開發(fā)與使用Ø 5.軟件測(cè)試的認(rèn)識(shí)Ø 6.Junit3 & Junit42認(rèn)識(shí)與理解注解本章的學(xué)習(xí)內(nèi)容:l 注解的定義l 注解的作用分類l 怎么使用注解l 注解三要素2.1注解的定義注解(Annotation),也叫元數(shù)據(jù),標(biāo)簽,注釋。一種代碼級(jí)別的說(shuō)明。它是JDK1.5及以后版本引入的一個(gè)特性,與類、接口、枚舉是在同一個(gè)層次。它可以聲明在包、類、字段、方法、局部變量、方法參數(shù)等的前面,用來(lái)對(duì)這些元素進(jìn)行說(shuō)明,注釋。之前寫的

2、Java中的3大注釋僅僅是上面說(shuō)的注釋的一種注釋(廣義) 注釋(單行 多行 文檔注釋) - 狹義的注釋;注釋是給程序員看的. 注解 注解是給程序看的.2.2我們?yōu)槭裁匆獙W(xué)習(xí)注解 在學(xué)習(xí)與工作中,經(jīng)常會(huì)看別人的代碼,別人的代碼中就有注解。 特別是框架相關(guān)的代碼spring 可以讓代碼更簡(jiǎn)潔,邏輯更加清爽 可以讓別人覺(jué)得你的技術(shù)還算不錯(cuò),見過(guò)一些東西(自定義注解)2.3注解的作用分類編寫文檔:通過(guò)代碼里標(biāo)識(shí)的元數(shù)據(jù)生成文檔【生成文檔doc文檔】代碼分析:通過(guò)代碼里標(biāo)識(shí)的元數(shù)據(jù)對(duì)代碼進(jìn)行分析【使用反射】編譯檢查:通過(guò)代碼里標(biāo)識(shí)的元數(shù)據(jù)讓編譯器能夠?qū)崿F(xiàn)基本的編譯檢查【Override】2.4怎么使用注

3、解(so easy) + 注解的名稱 它可以貼在方法,類,字段.2.5注解的三要素l需要有一個(gè)注解l使用這個(gè)注解(這個(gè)注解貼在什么地方) 第三方程序?yàn)樽⒔鈱?shí)現(xiàn)功能3 JDK四大內(nèi)置注解本章的學(xué)習(xí)內(nèi)容:l 認(rèn)識(shí)與使用四大內(nèi)置注解l 理解四大內(nèi)置注解的含義與作用使用Annotation要使用到 符號(hào),+Annotation名字3.1 java提供的四個(gè)基本的Annotation:Override限定覆寫父類方法Deprecated標(biāo)記已過(guò)時(shí)SuppressWarings抑制編譯器警告SafeVarargs 抑制堆污染警告3.2 具體使用-Override 限定覆寫父類方法特點(diǎn): 只能貼在方法上面作

4、用: 在工具中如果錯(cuò)誤,會(huì)直接提示我們(這個(gè)方法必需是父類有的方法,不然會(huì)報(bào)錯(cuò))3.3 具體使用-SuppressWarings抑制編譯器警告特點(diǎn):它可以貼在類,方法,字段. 使用它的時(shí)候還可以加參數(shù)作用:就是這個(gè)警告不出現(xiàn)而已(自欺欺人的說(shuō)法)3.4 具體使用-Deprecated標(biāo)記已過(guò)時(shí)一個(gè)方法過(guò)時(shí)代表什么? 有可能這個(gè)方法有bug.有更好的方法去代替它.為什么又要留著它? 向下兼容!3.5 具體使用-SafeVarargs 抑制堆污染(了解)警告-當(dāng)可變參數(shù)與泛型同時(shí)出現(xiàn)的時(shí)候,可能會(huì)產(chǎn)生堆污染思考? 為什么有的只能貼在方法上,有的標(biāo)簽可以貼在類在,方法,字段上 為什么有的標(biāo)簽可以加參

5、數(shù),有的標(biāo)簽不能加參數(shù)4 JDK的元注解本章的學(xué)習(xí)內(nèi)容:l 什么是元注解(matedata)?l 不同元注解的作用是什么?l 元注解的使用方法(自定義注解做詳細(xì)講解)4.1什么是元注解?寫在注解上面的注解4.2常用的元素注解Target : 使用范圍(就是可以貼哪?)Retention : 生命長(zhǎng)度(貼了后管多久)Documented : 文檔Inherited :繼承4.2.1 Target 使用范圍就是我們這個(gè)標(biāo)簽可以貼在哪些地方ElementType.CONSTRUCTOR 只能修飾構(gòu)造方法ElementType.METHOD 只能修飾方法ElementType.TYPE 只能修飾類,接

6、口,枚舉ElementType.FIELD 只能修飾字段(屬性),包括枚舉常量ElementType.LOCAL_VARIABLE 只能修飾局部變量ElementType.PACKAGE 只能修飾包(極少使用)ElementType.PARAMETER 只能修飾參數(shù)注意: 如何打在包上報(bào)錯(cuò)原因: 打錯(cuò)地方了package cn.itsource._01anno; 僅僅表示本類在這個(gè)包下面而已上面提示要求注解必須打包的聲明文件中應(yīng)該是:4.2.2 Retention : 生命存在范圍/ JDK中枚舉類 RetentionPolicy的源代碼public enum RetentionPolicy

7、SOURCE,CLASS,RUNTIMEOverride定義采用的Retention(value= SOURCE):只能在源文件出現(xiàn)Deprecated定義采用的Retention(value= RUNTIME):可以在執(zhí)行時(shí)出現(xiàn)SuppressWarning定義采用的Retention(value= SOURCE):只能在源文件出現(xiàn)SafeVarargs定義采用的Retention(value= SOURCE):只能在源文件出現(xiàn)自己做標(biāo)簽, 要運(yùn)用反射去分析. 那么我們自己做的標(biāo)簽必需是 RUNTIME4.2.3 Documented : 文檔4.2.4 Inherited :繼承我自己定義

8、了一個(gè)標(biāo)簽:MyAnnMyAnnpublic class Parent()public class Children() extends Parent如果我在自定義MyAnn這個(gè)標(biāo)簽的時(shí)候,在上面加上了Inherited,那么我們通過(guò)反射去找Children這個(gè)類,就可以找到這個(gè)標(biāo)簽加上后相當(dāng)于這個(gè)標(biāo)簽所修飾的類的所有子類也有這個(gè)標(biāo)簽5注解的開發(fā)和使用1 定義一個(gè)注解(標(biāo)簽)2 貼標(biāo)簽3 實(shí)現(xiàn)功能本章的學(xué)習(xí)內(nèi)容:l 怎么創(chuàng)建一個(gè)自定義注解l 在自定義注解上使用元注解l 自定義注解怎么添加屬性l 使用反射拿到注解5.1 創(chuàng)建一個(gè)自定義注解這種格式就是一個(gè)注解,就可以拿去貼貼貼5.2 在自定義注解

9、上使用元注解5.3在注解里面加上屬性特殊的寫法,名字是否是value問(wèn)題,默認(rèn)值,可以有的類型,多個(gè)屬性;5.4 使用反射去拿到注解5.4.1 拿到所有的注解5.4.2 拿到某一個(gè)特定的注解測(cè)試: 通過(guò)反射獲得類 方法 字段上面的注解- 需要先獲得對(duì)應(yīng)的對(duì)象 Class Method Field6軟件測(cè)試本章的學(xué)習(xí)內(nèi)容:l 什么是測(cè)試l 黑盒測(cè)試l 白盒測(cè)試(可以看到代碼來(lái)完成)l 單元測(cè)試測(cè)試先行:一種程序員如果不知道該怎么測(cè)試,就不應(yīng)該寫代碼黑盒測(cè)試:黑盒測(cè)試也稱功能測(cè)試,它是通過(guò)測(cè)試來(lái)檢測(cè)每個(gè)功能是否都能正常使用。在測(cè)試中,把程序看作一個(gè)不能打開的黑盒子,在完全不考慮程序內(nèi)部結(jié)構(gòu)和內(nèi)部特

10、性的情況下,在程序接口進(jìn)行測(cè)試,它只檢查程序功能是否按照需求規(guī)格說(shuō)明書的規(guī)定正常使用,程序是否能適當(dāng)?shù)亟邮蛰斎霐?shù)據(jù)而產(chǎn)生正確的輸出信息。黑盒測(cè)試著眼于程序外部結(jié)構(gòu),不考慮內(nèi)部邏輯結(jié)構(gòu),主要針對(duì)軟件界面和軟件功能進(jìn)行測(cè)試。黑盒測(cè)試是以用戶的角度,從輸入數(shù)據(jù)與輸出數(shù)據(jù)的對(duì)應(yīng)關(guān)系出發(fā)進(jìn)行測(cè)試的。很明顯,如果外部特性本身設(shè)計(jì)有問(wèn)題或規(guī)格說(shuō)明的規(guī)定有誤,用黑盒測(cè)試方法是發(fā)現(xiàn)不了的。作用:黑盒測(cè)試法注重于測(cè)試軟件的功能需求,主要試圖發(fā)現(xiàn)下列幾類錯(cuò)誤。功能不正確或遺漏;界面錯(cuò)誤;輸入和輸出錯(cuò)誤;數(shù)據(jù)庫(kù)訪問(wèn)錯(cuò)誤;性能錯(cuò)誤;初始化和終止錯(cuò)誤等。白盒測(cè)試:又稱結(jié)構(gòu)測(cè)試、透明盒測(cè)試、邏輯驅(qū)動(dòng)測(cè)試或基于代碼的測(cè)試。它

11、是按照程序內(nèi)部的結(jié)構(gòu)測(cè)試程序,通過(guò)測(cè)試來(lái)檢測(cè)產(chǎn)品內(nèi)部動(dòng)作是否按照設(shè)計(jì)規(guī)格說(shuō)明書的規(guī)定正常進(jìn)行,檢驗(yàn)程序中的每條通路是否都能按預(yù)定要求正確工作。 這一方法是把測(cè)試對(duì)象看作一個(gè)打開的盒子,測(cè)試人員依據(jù)程序內(nèi)部邏輯結(jié)構(gòu)相關(guān)信息,設(shè)計(jì)或選擇測(cè)試用例,對(duì)程序所有邏輯路徑進(jìn)行測(cè)試,通過(guò)在不同點(diǎn)檢查程序的狀態(tài),確定實(shí)際的狀態(tài)是否與預(yù)期的狀態(tài)一致。白盒測(cè)試是一種測(cè)試用例設(shè)計(jì)方法,盒子指的是被測(cè)試的軟件,白盒指的是盒子是可視的,你清楚盒子內(nèi)部的東西以及里面是如何運(yùn)作的。"白盒"法全面了解程序內(nèi)部邏輯結(jié)構(gòu)、對(duì)所有邏輯路徑進(jìn)行測(cè)試。測(cè)試者必須檢查程序的內(nèi)部結(jié)構(gòu),從檢查程序的邏輯著手,得出測(cè)試數(shù)據(jù)

12、。-灰盒測(cè)試咱們馬上要學(xué)習(xí)的是單元測(cè)試7 Junit3.X(了解) junit3.x是Java5以前的測(cè)試方式: 使用junit3.x:步驟: 1.把junit3.x的測(cè)試jar,添加到該項(xiàng)目中來(lái);(添加如下圖) 2.定義一個(gè)測(cè)試類,并讓該測(cè)試類繼承與TestCase類. 測(cè)試類的名字: XxxTest 3.在EmployeeDAOTest中編寫測(cè)試方法:如 public void testXxx() throws Exception 注意:方法是public修飾的,無(wú)返回的,必須以test作為方法的前綴,XXX表示測(cè)試的功能名字. 溫馨提示:輸入test,按atl+/,再敲回車,就有測(cè)試方法

13、,再修改方法的名字. 4.選擇某一個(gè)測(cè)試方法,鼠標(biāo)右鍵選擇 run as junit,或則選中測(cè)試類,表示測(cè)試該類中所有的測(cè)試方法. 在Android中的單元測(cè)試就是采用的是junit3.x; 若要在測(cè)試方法之前做準(zhǔn)備操作: EmployeeDAOTest覆寫TestCase中:protected void setUp() throws Exception方法 若要在測(cè)試方法之后做回收操作: EmployeeDAOTest覆寫TestCase中:protected void tearDown() throws Exception方法 執(zhí)行順序: setUp->測(cè)試方法->tearD

14、own->setUp-測(cè)試方法2->tearDown8 Junit4.X(掌握)junit4.x基于Java5開始的版本,支持注解. 使用junit4.x:步驟: 1.把junit4.x的測(cè)試jar,添加到該項(xiàng)目中來(lái)(導(dǎo)入的方式和junit3一樣); 2.定義一個(gè)測(cè)試類J.(不再繼承TestCase類) 它只是一個(gè)普通的java類 測(cè)試類的名字: XxxTest 3.在EmployeeDAOTest中編寫測(cè)試方法:如 Test public void testXxx() throws Exception 注意:方法是public修飾的,無(wú)返回的,該方法上必須貼有Test標(biāo)簽,XXX

15、表示測(cè)試的功能名字. 4.選擇某一個(gè)測(cè)試方法,鼠標(biāo)右鍵選擇 run as junit,或則選中測(cè)試類,表示測(cè)試該類中所有的測(cè)試方法. 以后單元測(cè)試使用最多的方式: 若要在測(cè)試方法之前做準(zhǔn)備操作: EmployeeDAOTest隨意定義一個(gè)方法并使用Before標(biāo)注: Before public void xx() throws Exception方法 若要在測(cè)試方法之后做回收操作: EmployeeDAOTest隨意定義一個(gè)方法并使用After標(biāo)注: After public void xx() throws Exception方法 特點(diǎn):每次執(zhí)行測(cè)試方法之前都會(huì)執(zhí)行Before方法,每次執(zhí)行

16、測(cè)試方法之后都會(huì)執(zhí)行After方法; 有沒(méi)有方式之初始化一次,和最終銷毀一次呢? BeforeClass標(biāo)簽:在所有的Before方法之前執(zhí)行,只在最初執(zhí)行一次. 只能修飾靜態(tài)方法 AfterClass標(biāo)簽:在所有的After方法之后執(zhí)行,只在最后執(zhí)行一次. 只能修飾靜態(tài)方法 執(zhí)行順序: BeforeClass->(Before->Test-After多個(gè)測(cè)試方法)->AfterClass注意:l沒(méi)有在方法上面寫 Testl測(cè)試方法不能有返回值(有的話就會(huì)報(bào)錯(cuò))l測(cè)試方法不可以接收參數(shù)l測(cè)試方法必需的公共的斷言::Assert.assertEquals(message, ex

17、pected, actual):比較的值 三個(gè)參數(shù): message: 斷言失敗的提示信息,斷言成功不會(huì)顯示. expected: 期望值 actual: 真實(shí)值 若真實(shí)值和期望值想等,則斷言成功.->綠條:Assert.assertSame(message, expected, actual):比較地址,是同一個(gè)對(duì)象 Assert.assertNotSame(message, expected, actual):斷言不是同一個(gè)對(duì)象:Assert.assertTrue(message, condition):斷言condition應(yīng)該為TRUE.:Assert.assertFalse(message, condition):斷言condition應(yīng)該為FALSE.:Assert.assertNull(message, object):斷言對(duì)象object為null.:Assert.assertNotNull(message, object):斷言對(duì)象object不為null.:Test(expected=ArithmeticException.class) 期望該方法報(bào)錯(cuò),報(bào)錯(cuò)ArithmeticException.:Test(timeout=400) 期望該方法在400毫秒之內(nèi)執(zhí)行完成.9 今天要求1. 使用四大JDK內(nèi)置注解2. 掌握了解元注解(Rete

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論