Текст
                    ...
TT


A>Kowya 6nox


PaCCMOTpeH
COBpeMeHHblVi
Java!


Java
3

eKTMBHoe
nporpaMMMpOBaHMe
TpeTbe
3AaH
e


n}"lWHe Mero,qHKH nporpaMMHposaHHR






I I 1-1,


:::t


-
.....


----


j




>


----


.../1/lR a" .. .11 - a


lit)





6.6. flPEJlflOlJHTAHTE AHHOTAl1.HH CXEMAM HMEHOBAHHH 233 3TOT HHcTPYMeHTapHM TecTHpoBaHIDI npHHHMaeT B KOMaH,lJ,HOM cTpoKe nOJIHOe HMSI KJIaCCa H pe<l>JIeKTHBHo BbInOJIHSleT Bce MeTOJJ.bl KJIaCCa, aHHoTHpoBaHHbie C nOMow.blO aHHoTau,HH Test, nYTeM Bb130Ba Method. invoke. MeToJJ. isAnnota- tionPresent co06w.aeT HHcTpYMeHry, KaKHe MeTOJJ.bl CJIeJJ.yeT 3anycTHTb. ECJIH TecToBblM MeTOJJ. reHepHpyeT HCKJIIO'ieHHe. pe<l>JIeKCHBHaSi <l>YHKU,HOHaJIbHOCTb 060- pa'iHBaeT ero B InvocationTargetException. TecTHpoBw.HK nepeXBaTbIBaeT 1TO HCKJIIO'ieHHe H BbIBOJJ.HT C006w.eHHe 0 c60e, cOJJ.ep:>Kaw.ee HCXOJJ.Hoe HCKJIIO'ie- HHe, creHepHpOBaHHoe TecTHpyeMblM MeTOJJ.OM, KOTopoe H3BJIeKaeTCSI H3 Invoca- tionTargetException C nOMow.blO MeTOJJ.a getCause. EcJIH nonblTKa pe<l>JIeKTHBHOrO Bb130Ba TecTMpyeMoro MeTOJJ.a reHepHpyeT JIIO- 60e HCKJIIO'ieHHe, OTJIH'iHoe OT InvocationTargetException, 3TO YKa3bIBaeT Ha HeJJ.onYCTHMoe HcnOJIb30BaHHe aHHOTaU,l1H Test, KOTopoe He 6blJIO 06HapY:>KeHO BO BpeMSI KOMnHJISlu,MH. TaKoe HeKOppeKTHOe HCnOJIb30BaHHe BKJIIO'iaeT aHHOTau,HIO MeTOJJ.a 3K3eMnJISlpa, MeTOJJ.a C OJJ.HHM HJIM HeCKOJIbKHMH napaMeTpaMH HJIH HeJJ.O- crynHoro MeTOJIa. BTopoM 6JIOK catch TecTHpoBW.HKa nepeXBaTbIBaeT 3TH OlUH6- KH HCnOJIb30BaHHSI aHHoTau.HH Test H BbIBOJJ.HT cooTBeTcTBYIOw.ee co06w.eHHe 06 olliH6Ke. BOT BbIBOJJ. RunTests npH TecTHpoBaHHH Sample: public static void Sample.m3() failed: RuntimeException: Boom Invalid @Test: public void Sample.mS() public static void Sarnple.m7() failed: RuntimeException: Crash npO eHo: I, C6oeB: 3 Tenepb JJ.06aBHM nOJJ.JJ.ep:>KKy TeCTOB, KOTopble 3aBeplUalOTCSI ycnelUHo, TOJIbKO eCJIH OHH reHepHpYIOT OnpeJIeJIeHHOe HCKJIIO'ieHHe. JJ:J1S1 3Toro HaM HY:>KeH HOBbIH THn aHHOTaLJ,HH: II THn aHHoTa c napaMeTpOM import java.lang.annotation.*; /** * YKa3HBaeT, 4TO aHHoT poBaHHH MeTO RBnReTCR * TecT PYID M MeTO OM, KOTOpHM nR ycnelliHoro 3aBepllieH R * on eH reHep poBaTb YKa3aHHoe CKnID4eH e */ @Retention(RetentionPolicy.RUNTIME) @Target(ElernentType.METHOD) public @interface ExceptionTest { Class<? extends Throwable> value(); THn napaMeTpa 3TOM aHHoTau.HH - Class<? extends Throwable>. 3TOT THn C CHMBOJIOM nOJJ.CTaHOBKH JJ.OCTaTO'iHO rpoMo3JJ.KHH. Ha npocToM 'ieJIOBe'ieC- KOM Sl3blKe 3TO 03Ha'iaeT "o6'beKT C 1 ass JJ.JISI HeKoToporo KJIaCca, KOTOpblM pac- lUHpSleT KJIacc Throwable" H n03BOJISIeT nOJIb30BaTeJIIO aHHOTaLJ,HH YKa3aTb JIIO- 60M THn HCKJIIOLJeHHSI (HJIH OlUH6KH). 3TO HCnOJIb30BaHHe SlBJISleTCSI npHMepoM