JAVA 10 Nieznany

background image

Programo

w

anie

obiekto

w

e

(Ja

v

a)



10

1

P

om

yªk

a

P

o

dsta

w

o

w

¡

ideologi¡

Ja

vy

1

jest

zaªo»enie,

»e

'¹le

sform

uªo

w

an

y

k

o

d

nie

zostanie

wyk

onan

y'



Przykªad:

Istniej¡

dwie

publi zne

klasy

w

dwó

h

plik

a

h

M ain.java

i

T est.java

:

1

pa kage

pl .kiel e . tu.lab10 ;

2

3

publi

lass

Main

{

4

publi

stati

void

main (String [℄

args )

{

5

Test

t

=

new

Test ();

6

}

7

}

Przykªad

1:

sr /pl/kiel e/tu/lab10/Main.ja

v

a

{link}

1

pa kage

pl .kiel e . tu.lab10 ;

2

3

publi

lass

Test

{

4

publi

Test ()

{

5

}

6

}

Przykªad

2:

sr /pl/kiel e/tu/lab10/T

est.ja

v

a

{link}

K

ompila ja

i

uru

homienie:

1

java

pl\ kiel e \tu \lab10 \Test .java

2

java

pl\ kiel e \tu \lab10 \Main .java

3

java

pl.kiel e

.tu. lab10 .Main

Aplik

a ja

dziaªa

p

opra

wnie.

Co

stanie

si

je±li

k

onstruktor

klasy

T est

u zynim

y

pryw

atn

ym,

a

nastpnie

przez

'p

om

yªk

'

sk

ompilujem

y

t

ylk

o

klas

T est

(zap

omina

o

klasie

M ain

)

i

uru

homim

y

aplik

a j?

Ex eption

in

thread

"main "

java. lang .IllegalA essError

:

tried

to

a ess

method

←֓

pl.kiel e

.tu. lab10 .Test .<init >() V

from

lass

pl.kiel e

.tu.lab10 . Main

at

pl.kiel e

.tu. lab10 .Main .main (Main .java :5)

2

W

yj¡tek



W

yj¡tek

(ex eption)

[2



Sp

e jaln

y

b

yt

programist

y zn

y

p

o

w

o

duj¡ y

przerw

anie

lub

za

wieszenie

normal-

nej

nitki

stero

w

ania

program

u

i

przej± ie

do

sp

e jalnego

fragmen

tu

program

u

za

jm

uj¡ ego

si

obsªug¡

tego

wyj¡tku.

(.

.

.

)



W

sytua ji

wyj¡tk

o

w

ej

[2

nie

mo»na

k

on

t

yn

uo

w

przet

w

arzania,

p

oniew

w

aktualn

ym

k

on

tek± ie

nie

ma

dostpu

do

informa ji

k

onie znej

do

rozwi¡zania

problem

u.

W

szystk

o,

o

mo»na

zrobi¢,

to

wyj±¢

z

aktualnego

k

on

tekstu

i

przek

aza¢

problem

dalej.

T

ak

si

wªa±nie

dzieje

gdy

zgªaszan

y

jest

wyj¡tek."

W

jaki

sp

osób

p

o

dobne

problem

y

zostaªy

rozwi¡zane

w

jzyk

a

h,

w

który

h

nie

ma

wyj¡tk

ó

w

(np.

w

C)?

Klasa

Thro

w

able

opisuje

wszystk

o

o

mo»e

b

zgªoszone

jak

o

wyj¡tek.

Istniej¡

dw

a

ro

dza

je

obiektó

w

Thro

w

able

(.

.

.

).

Error

reprezen

tuje

bªdy

k

ompila ji

i

system

u

(.

.

.

).

Ex eption

jest

p

o

dsta

w

o

wym

t

yp

em,

jaki

mo»e

b

wyrzu on

y

z

do

w

olnej

meto

dy

klasy

biblioteki

standardo

w

ej

Ja

vy

i

wªasnej

meto

dy

lub

w

wyniku

inn

y

h

bªdó

w

przy

wyk

onaniu.

W

yj¡tki

dzielim

y

na:

1

Thinking

in

Ja

v

a,

Bru e

E

k

el,

W

ydanie

IV,

Helion,

2006

1

background image

-

niew

eryk

o

w

alne

(niespra

wdzalne,

niek

on

trolo

w

ane,

ang.

un

he

k

ed)



wyj¡tek

Run

timeEx eption

oraz

klasy

p

otomne,

k

ompilator

nie

w

erykuje

zy

tego

t

ypu

wyj¡tek

jest

zgªaszan

y

lub

obsªugiw

an

y

przez

meto

d,

-

w

eryk

o

w

alne

(spra

wdzalne,

k

on

trolo

w

ane)



inne

wyj¡tki.

Hierar

hia

klas:

1

java .lang .Obje t

2

extended

by

java . lang. Throwable

3

extended

by

java .lang .Ex eption

1

java .lang .Obje t

2

extended

by

java . lang. Throwable

3

extended

by

java .lang .Ex eption

4

extended

by

java .lang .RuntimeEx eption

1

java .lang .Obje t

2

extended

by

java . lang. Throwable

3

extended

by

java .lang .Error

T

w

orzenie

klas

wªasn

y

h

wyj¡tk

ó

w:

1

pa kage

pl .kiel e . tu.lab10 ;

2

3

publi

lass

MyEx eption

extends

Ex eption

{

4

}

Przykªad

3:

sr /pl/kiel e/tu/lab10/MyEx eption.ja

v

a

{link}

1

pa kage

pl .kiel e . tu.lab10 ;

2

3

publi

lass

MyRuntimeEx eption

extends

RuntimeEx eption

{

4

}

Przykªad

4:

sr /pl/kiel e/tu/lab10/MyRun

timeEx eption.ja

v

a

{link}

Blok

prób

(ang.

try)

[2



blok

prze

h

wytuj¡ y

wyj¡tki.

Pro

edury

obsªugi

wyj¡tku

[2℄

nastpuj¡

b

ezp

o±rednio

p

o

bloku

try

i

ozna zane

p

oprzez

sªo

w

o

klu zo

w

e

catch



Sek

ja

f inally



fragmen

t

k

o

du,

który

h ielib

y±m

y

wyk

ona¢

niezale»nie

o

d

tego,

zy

w·bloku

try

zostanie

zgªoszon

y

wyj¡tek

Zgªaszanie

wyj¡tk

ó

w:

"(...)

mo»na

zgªosi¢

k

a»dy

ro

dza

j

obiektu,

który

mo»na

wyrzu i¢

tj.

dziedzi z¡ y

p

o

klasie

T hrowable

"

np.

throw new M yException

()

.

Prze

h

wy enie

wszystki

h

wyj¡tk

ó

w:

1

try

{

2

...

3

}

at h

(Ex eption

e){

4

e.printSta kTra e

();

5

}

Zastoso

w

anie

sym

b

olu

"|"

(or)

umo»liwia

st

w

orzenie

bloku

at h,

w

którym

realizo

w

ana

jest

obsªuga

wielu

wyj¡tk

ó

w.

P

oni»ej

przedsta

wiono

przykªady

obsªugi

dw

ó

h

wyj¡tk

ó

w:

1

try

{

2

...

3

}

at h

(Arithmeti Ex eption

|

ArrayIndexOutOfBoundsEx eptio n

e){

4

e.printSta kTra e

();

5

}

2

background image

1

try

{

2

...

3

}

at h

(Arithmeti Ex eption

e1){

4

e1. printSta kTra e

();

5

}

at h

(ArrayIndexOutOfBoundsEx epti on

e2 ){

6

e2. printSta kTra e

();

7

}

Rozszerzona

forma

wyra»enia

try

zw

ana

try-with-r

esour

e

ma

nastpuj¡ ¡

p

osta¢

[1

℄:

1

try

{spe yfika ja

- zasobu }

{

2

//

uzy ie

zasobu

3

}

Mo»e

zosta¢

ona

wyk

orzystana

t

ylk

o

z

zasobami

implemen

tuj¡ ymi

in

terfejs

java.lang.A

utoClose

able,

który

p

osiada

t

ylk

o

jedn¡

meto

d

lose().

In

terfejsy

ten

rozszerza

java.io.Close

able,

który

tak»e

p

osiada

t

ylk

o

jedn¡

meto

d

lose().

Skªadnia

ta

jest

zsto

wyk

orzyst

yw

ana

w

p

o

wi¡zaniu

ze

strumieniami,

np.

plik

o

wymi.



W

meto

dzie

prze i¡»onej

mo»na

zgªasza¢

jedynie

te

wyj¡tki,

które

zostaªy

p

o

dane

w

sp

e yk

a ji

z

klasy

bazo

w

ej.

(.

.

.

)

Mo»na

zanie

ha¢

wyrzu ania

jaki

hk

olwiek

wyj¡tk

ó

w

p

omimo

i

h

ob

e no± i

w

klasie

bazo

w

ej.

1

publi

lass

TestCat h

{

2

publi

stati

void

main (String [℄

args )

throws

Ex eption

{

3

Random

r

=

new

Random

(

new

Date ().getTime

()

>>>

(

new

Date () .getTime ()

%

4));

4

try

{

5

swit h

(r.nextInt

()

%

4)

{

6

ase

0:

System . out. print (

"0.

"

);

7

throw

new

MyEx eption

() ;

8

ase

1:

System . out. print (

"1.

"

);

9

throw

new

MyRuntimeEx eption

();

10

ase

2:

System . out. print (

"2.

"

);

11

throw

new

NullPointerEx eption

() ;

12

default

:

System

.out .print (

"3.

"

);

13

throw

new

FileNotFoundEx eption

() ;

14

}

15

}

at h

(MyEx eption

e)

{

16

System

.out. println (

" e.getClass

().getSimpleName

()

=

"

+

e. getClass () .getSimpleName

()) ;

17

}

at h

(FileNotFoundEx eption

e)

{

18

System

.out. println (

" e.getClass

().getSimpleName

()

=

"

+

e. getClass () .getSimpleName

()) ;

19

}

at h

(Ex eption

e)

{

20

//

obsªuga

wszystki h

pozostaªy h

wyj¡tków

21

System

.out. println (

" e.getClass

().getSimpleName

()

=

"

+

e. getClass () .getSimpleName

()) ;

22

System

.out. println (

" e.getMessage

()

=

"

+

e. getMessage

());

23

//

zwra a

sz zegóªow¡

informa j

24

System

.out. println (

" e.getLo alizedMessage

()

=

"

+

e. getLo alizedMessage

());

25

System

.out. println (

" e.printSta kTra e

() "

);

26

e. printSta kTra e

(System . out) ;

//

drukuje

komunikat

oraz

stos

wywoªa«

27

System

.out. println (

" e.getCause

()

=

"

+

e.getCause

()) ;

//

zwra a

przy zyn

28

}

29

}

30

}

Przykªad

5:

sr /pl/kiel e/tu/lab10/T

estCat

h.ja

v

a

{link}

Co

si

stanie

je»eli

wyj¡tek

nie

zostanie

wyªapan

y?

Która

z

p

oni»szy

h

deni ji

jest

nie

p

opra

wna

i

dla zego?

1

publi

lass

TestThrows

{

2

publi

void

a ()

{

3

throw

new

MyEx eption

();

4

}

5

3

background image

6

publi

void

b ()

{

7

throw

new

MyRuntimeEx eption

() ;

8

}

9

10

publi

void

()

throws

Ex eption

{

11

throw

new

MyEx eption

();

12

}

13

14

publi

void

d ()

throws

Ex eption

{

15

throw

new

MyRuntimeEx eption

() ;

16

}

17

18

publi

void

e ()

throws

RuntimeEx eption

{

19

throw

new

MyEx eption

();

20

}

21

22

publi

void

f ()

throws

RuntimeEx eption

{

23

throw

new

MyRuntimeEx eption

() ;

24

}

25

26

publi

void

g ()

throws

MyEx eption

{

27

throw

new

MyEx eption

();

28

}

29

30

publi

void

h ()

throws

MyEx eption

{

31

throw

new

MyRuntimeEx eption

() ;

32

}

33

34

publi

void

i ()

throws

MyRuntimeEx eption

{

35

throw

new

MyEx eption

();

36

}

37

38

publi

void

j ()

throws

MyRuntimeEx eption

{

39

throw

new

MyRuntimeEx eption

() ;

40

}

41

42

publi

void

k ()

throws

MyEx eption

,

MyRuntimeEx eption

{

43

return

;

44

}

45

}

Przykªad

6:

sr /pl/kiel e/tu/lab10/T

estThro

ws.ja

v

a

{link}

1

publi

lass

TestFinally

{

2

stati

void

method

()

throws

MyEx eption

{

3

Random

r

=

new

Random

();

4

if

(r.nextInt

()

%

2

==

0)

{

5

System

.out. println (

" method ()

throw "

);

6

throw

new

MyEx eption

();

7

}

else

{

8

System

.out. println (

" method ()

return "

);

9

return

;

10

}

11

}

12

13

publi

stati

void

main (String [℄

args )

{

14

try

{

15

method

();

16

System

.out. println (

" main()

return "

);

17

return

;

18

}

at h

(MyEx eption

e)

{

4

background image

19

System

.out. println (

" main()

at h

"

+

e );

20

}

finally

{

21

System

.out. println (

" main()

finally

"

);

22

}

23

}

24

}

Przykªad

7:

sr /pl/kiel e/tu/lab10/T

estFinally

.ja

v

a

{link}

3

T

yp

o

w

e

sp

osob

y

obsªugi

wyj¡tk

ó

w

T

yp

o

w

e

sp

osob

y

obsªugi

wyj¡tk

ó

w

zrealizo

w

ano

na

p

o

dsta

wie:

Ja

v

a.

Obsªuga

wyj¡tk

ó

w,

usu

w

anie

bªdó

w

i

testo

w

anie

k

o

du,

Stephen

Stelting,

Helion,

2005.

3.1

Zapis

bªdu

lub

zwi¡zanej

z

nim

informa ji

do

dziennik

a

Informa ja

o

bªdzie

mo»e

zosta¢

wy±wietlona

na

k

onsoli

lub

przekiero

w

ana

do

pliku.

W

bardziej

zaa

w

an-

so

w

an

y

h

rozwi¡zania

h

nale»aªob

y

u»y¢

J avaLoggingAP I

.

W

przykªadzie

p

oni»ej

informa ja

o

wyj¡tku

jest

wy±wietlana

na

k

onsoli

przy

p

omo

y

System.out,

zapisyw

ana

w

pliku

przy

p

omo

y

przekiero

w

anego

System.err

oraz

wy±wietlana

w

oknie

dialogo

wym.

1

publi

lass

MyClass

{

2

stati

String

getLanguage

()

throws

Ex eption

{

3

throw

new

Ex eption

(

" My

ex eption

"

) ;

4

}

5

}

Przykªad

8:

sr /pl/kiel e/tu/lab10/MyClass.ja

v

a

{link}

1

publi

lass

TestEx eption1

{

2

3

stati

{

4

try

{

5

System

.setErr (

new

PrintStream

(

"log .txt "

));

6

}

at h

(FileNotFoundEx eption

ignored )

{

7

ignored

.printSta kTra e

() ;

8

}

9

}

10

11

publi

stati

void

main (String [℄

args )

{

12

try

{

13

MyClass

.getLanguage

() ;

14

}

at h

(Ex eption

e)

{

15

e. printSta kTra e

(System . out) ;

16

e. printSta kTra e

(System . err) ;

17

JOptionPane

.showMessageDialog

(

null

,

e) ;

18

}

19

}

20

}

Przykªad

9:

sr /pl/kiel e/tu/lab10/T

estEx eption1.ja

v

a

{link}

3.2

Zwró

enie

si

do

u»ytk

o

wnik

a

z

pro±ba

o

p

o

dje ie

o

dp

o

wiedniej

de yzji

1

publi

lass

TestEx eption2

{

2

3

publi

stati

void

main (String [℄

args )

{

5

background image

4

try

{

5

MyClass

.getLanguage

() ;

6

}

at h

(Ex eption

e)

{

7

int

answer

=

JOptionPane

. showConfirmDialog

(

null

,

"End ?"

,

"Confirm

Dialog "

,

←֓

JOptionPane

.YES_NO_OPTION

,

JOptionPane

.ERROR_MESSAGE

);

8

if

(answer

==

JOptionPane

.YES_OPTION

)

9

System

.out .println (

"End"

);

10

else

11

System

.out .println (

"Not

end"

);

12

}

13

}

14

}

Przykªad

10:

sr /pl/kiel e/tu/lab10/T

estEx eption2.ja

v

a

{link}

3.3

U»y ie

w

arto± i

dom

y±ln

y

h

lub

alternat

ywn

y

h

1

publi

lass

TestEx eption3

{

2

3

final

private

stati

String

DEFAULT_LANGUAGE

=

"EN "

;

4

private

stati

String

language ;

5

6

publi

stati

void

main (String [℄

args )

{

7

try

{

8

language

=

MyClass .getLanguage

();

9

}

at h

(Ex eption

e)

{

10

language

=

DEFAULT_LANGUAGE

;

11

}

12

}

13

}

Przykªad

11:

sr /pl/kiel e/tu/lab10/T

estEx eption3.ja

v

a

{link}

3.4

Przek

azanie

stero

w

ania

do

innej

z± i

aplik

a ji

1

publi

lass

TestEx eption4

{

2

3

publi

stati

void

main (String [℄

args )

{

4

try

{

5

MyClass

.getLanguage

() ;

6

}

at h

(Ex eption

e)

{

7

reset () ;

8

}

9

}

10

11

stati

void

reset

(){

12

//

...

13

}

14

}

Przykªad

12:

sr /pl/kiel e/tu/lab10/T

estEx eption4.ja

v

a

{link}

3.5

K

on

w

ersja

wyj¡tku

do

innej

p

osta i

Zaªó»m

y

,

»e

klasa

p

o

winna

implemen

to

w

in

terfejs

M yInterf ace

,

a

w

ewn¡trz

meto

dy

method

()

p

o

winna

wyw

oªa¢

M yClass.getLanguage

()

,

która

mo»e

zgªosi¢

wyj¡tek.

Do

danie

frazy

throws Exception

do

sygna-

tury

meto

dy

method

()

nie

jest

mo»liw

e

p

oniew

wtedy

nie

b

dzie

si

ona

zgadza¢

z

sygnatur¡

meto

dy

6

background image

w

in

terfejsie.

W

takim

przypadku

mo»em

y

u»y¢

wyj¡tku

niespra

wdzalnego,

który

jak

o

przy zyn

b

dzie

miaª

usta

wion

y

nasz

wyj¡tek

(

throw new RuntimeException

(e)

).

1

publi

interfa e

MyInterfa e

{

2

publi

void

method

();

3

}

Przykªad

13:

sr /pl/kiel e/tu/lab10/MyIn

terfa e.ja

v

a

{link}

1

publi

lass

TestEx eption5

implements

MyInterfa e

{

2

3

Override

4

publi

void

method

()

{

//

!!!

throws

Ex eption

{

5

try

{

6

MyClass

.getLanguage

() ;

7

}

at h

(Ex eption

e)

{

8

throw

new

RuntimeEx eption

(e) ;

9

}

10

}

11

12

publi

stati

void

main (String [℄

args )

{

13

TestEx eption5

t

=

new

TestEx eption5

() ;

14

t.method

();

15

}

16

}

Przykªad

14:

sr /pl/kiel e/tu/lab10/T

estEx eption5.ja

v

a

{link}

3.6

Zignoro

w

anie

problem

u

Jest

bardzo

maªo

przypadk

ó

w,

kiedy

mo»na

zignoro

w

wyst¡

pienie

wyj¡tku

dlatego

na

jlepiej

nie

stoso

w

tej

te

hniki.

1

publi

lass

TestEx eption6

{

2

3

publi

stati

void

main (String [℄

args )

{

4

try

{

5

MyClass

.getLanguage

() ;

6

}

at h

(Ex eption

ignore

)

{

7

}

8

}

9

}

Przykªad

15:

sr /pl/kiel e/tu/lab10/T

estEx eption6.ja

v

a

{link}

3.7

P

o

wtórzenie

op

era ji

W

p

oni»szym

przypadku

trzykrotnie

wyw

oªyw

ana

jest

meto

da

getLanguage

()

.

P

omidzy

p

osz zególn

ymi

wyw

oªaniami

mo»na

zastoso

w

o

dstp

zaso

wy

(

T imeU nit.SECON DS.sleep

(1)

).

Je»eli

meto

da

nie

zgªosi-

ªab

y

wyj¡tku

instruk

ja

break

sp

o

w

o

duje

przerw

anie

wyk

on

yw

ania

p

tli.

1

publi

lass

TestEx eption7

{

2

publi

stati

void

main (String [℄

args )

{

3

int

ounter

=

0;

4

while

( ounter ++

<

3)

{

5

try

{

6

MyClass

.getLanguage

();

7

break

;

8

}

at h

(Ex eption

e )

{

7

background image

9

System

.err .println (

"Ex eption

no.

"

+

ounter );

10

e .printSta kTra e

() ;

11

try

{

12

TimeUnit . SECONDS .sleep (1) ;

13

}

at h

(InterruptedEx eption

e2)

{

14

e2.printSta kTra e

();

15

}

16

}

17

}

18

}

19

}

Przykªad

16:

sr /pl/kiel e/tu/lab10/T

estEx eption7.ja

v

a

{link}

3.8

W

yw

oªanie

op

era ji

alternat

ywnej

1

publi

lass

TestEx eption8

{

2

3

publi

stati

void

main (String [℄

args )

{

4

try

{

5

MyClass

.getLanguage

() ;

6

}

at h

(Ex eption

e)

{

7

getLanguageFromFile

() ;

8

}

9

}

10

11

stati

void

getLanguageFromFile

()

{

12

//

...

13

}

14

}

Przykªad

17:

sr /pl/kiel e/tu/lab10/T

estEx eption8.ja

v

a

{link}

3.9

Przygoto

w

anie

aplik

a ji

do

zamkni ia

Przed

zamkni iem

aplik

a ji

mo»e

wyst¡

pi¢

k

onie zno±¢:

-

zamkni ia

ot

w

art

y

h

plik

ó

w,

-

zamkni ia

ot

w

art

y

h

p

oª¡ ze«

sie io

wy

h,

bazo

dano

wy

h

itp.,

-

zapisanie

dan

y

h,

-

p

oinformo

w

anie

inn

y

h

aplik

a ji,

systemó

w

itp.

o

t

ym

fak

ie.

1

publi

lass

TestEx eption9

{

2

3

publi

stati

void

main (String [℄

args )

{

4

try

{

5

MyClass

.getLanguage

() ;

6

}

at h

(Ex eption

e)

{

7

/*

zamkni ie

otwarty h

plików

,

8

zamkni ie

otwarty h

poª¡ ze«

sie iowy h

,

bazodanowy h

itp

9

zapisanie

dany h ,

10

poinformowanie

inny h

aplika ji

,

systemów

itp.

o

tym

fak ie .

11

12

zamkni ie

aplika ji

13

jako

parametr

podaje

si

"kod

statusu

"

14

warto± i

inne

ni»

0

ozna zaj¡

nienormalne

zamkni ie

aplika ji

*/

8

background image

15

System

.exit (1);

16

}

17

}

18

}

Przykªad

18:

sr /pl/kiel e/tu/lab10/T

estEx eption9.ja

v

a

{link}

4

P

o

dsta

w

o

w

e

wyj¡tki

W

yj¡tki

zdenio

w

ane

w

pakie ie

ja

v

a.lang

ˆ

Arithmeti Ex eption

ˆ

Arra

yIndexOutOfBoundsEx eption

ˆ

Arra

yStoreEx eption

ˆ

ClassCastEx eption

ˆ

ClassNotF

oundEx eption

ˆ

CloneNotSupp

ortedEx eption

ˆ

En

umConstan

tNotPresen

tEx eption

ˆ

Ex eption

ˆ

IllegalA

essEx eption

ˆ

IllegalArgumen

tEx eption

ˆ

IllegalMonitorStateEx eption

ˆ

IllegalStateEx eption

ˆ

IllegalThreadStateEx eption

ˆ

IndexOutOfBoundsEx eption

ˆ

Instan

tiationEx eption

ˆ

In

terruptedEx eption

ˆ

Negativ

eArra

ySizeEx eption

ˆ

NoSu

hFieldEx eption

ˆ

NoSu

hMetho

dEx eption

ˆ

NullP

oin

terEx eption

ˆ

Num

b

erF

ormatEx eption

ˆ

Ree tiv

eOp

erationEx eption

ˆ

Run

timeEx eption

ˆ

Se urit

yEx eption

ˆ

StringIndexOutOfBoundsEx eption

ˆ

T

yp

eNotPresen

tEx eption

ˆ

Unsupp

ortedOp

erationEx eption

9

background image

W

yj¡tki

zdenio

w

ane

w

pakie ie

ja

v

a.util

ˆ

Con urren

tMo

di ationEx eption

ˆ

Dupli ateF

ormatFlagsEx eption

ˆ

Empt

ySta

kEx eption

ˆ

F

ormatFlagsCon

v

ersionMismat

hEx eption

ˆ

F

ormatterClosedEx eption

ˆ

IllegalF

ormatCo

deP

oin

tEx eption

ˆ

IllegalF

ormatCon

v

ersionEx eption

ˆ

IllegalF

ormatEx eption

ˆ

IllegalF

ormatFlagsEx eption

ˆ

IllegalF

ormatPre isionEx eption

ˆ

IllegalF

ormatWidthEx eption

ˆ

IllformedLo

aleEx eption

ˆ

InputMismat

hEx eption

ˆ

In

v

alidProp

ertiesF

ormatEx eption

ˆ

MissingF

ormatArgumen

tEx eption

ˆ

MissingF

ormatWidthEx eption

ˆ

MissingResour eEx eption

ˆ

NoSu

hElemen

tEx eption

ˆ

T

o

oMan

yListenersEx eption

ˆ

Unkno

wnF

ormatCon

v

ersionEx eption

ˆ

Unkno

wnF

ormatFlagsEx eption

ˆ

Ree tiv

eOp

erationEx eption

ˆ

Run

timeEx eption

ˆ

Se urit

yEx eption

ˆ

StringIndexOutOfBoundsEx eption

ˆ

T

yp

eNotPresen

tEx eption

ˆ

Unsupp

ortedOp

erationEx eption

10

background image

5

Aser je

Staªe

1

publi

lass

TestStati

{

2

3

final

private

stati

boolean

TEST

=

true

;

4

5

stati

int

age

=

-1;

6

7

publi

stati

void

main (String [℄

args )

{

8

if

( TEST )

9

if

(age

<

0)

10

throw

new

RuntimeEx eption

(

" Not

orre t

value :

age

=

"

+

age );

11

System . out.println

(

"My

age

=

"

+

age );

12

}

13

}

Przykªad

19:

sr /pl/kiel e/tu/lab10/T

estStati .ja

v

a

{link}

TEST

=

false

publi

stati

void

main (java .lang .String [℄) ;

Code :

0:

getstati

#2

//

Field

java /lang /System

.out :Ljava /io /PrintStream

;

3:

new

#3

//

lass

java /lang /StringBuilder

...

TEST

=

true

publi

stati

void

main (java .lang .String [℄) ;

Code :

0:

getstati

#2

//

Field

age :I

3:

ifge

35

6:

new

#3

//

lass

java /lang /RuntimeEx eption

9:

dup

10:

new

#4

//

lass

java /lang /StringBuilder

13:

dup

14:

invokespe ial

#5

//

Method

java /lang /StringBuilder

."< init >":() V

17:

ld

#6

//

String

Not

orre t

value :

age

=

19:

invokevirtual

#7

//

Method

←֓

java/ lang/ StringBuilder

.append :(Ljava

/lang /String ;) Ljava /lang /StringBuilder

;

22:

getstati

#2

//

Field

age :I

25:

invokevirtual

#8

//

Method

java /lang /StringBuilder

.append

:(I) Ljava /lang /StringBuilder

;

28:

invokevirtual

#9

//

Method

java /lang /StringBuilder

.toString

:() Ljava /lang /String

;

31:

invokespe ial

#10

//

Method

java / lang/ RuntimeEx eption

."< init >":( Ljava /lang /String ;) V

34:

athrow

35:

getstati

#11

//

Field

java /lang / System .out :Ljava /io /PrintStream

;

38:

new

#4

//

lass

java /lang /StringBuilder

...

Aser je

"Stosunk

o

w

o

no

wym

elemen

tem

w

Ja

vie

jest

sªo

w

o

klu zo

w

e

assert

[1℄.

W

trak

ie

t

w

orzenia

i

testo

w

ania

programó

w

u»yw

a

si

go

do

aser ji,

zyli

spra

wdzania,

zy

dan

y

w

arunek

jest

sp

eªnion

y

w

trak

ie

dziaªania

program

u."

Wª¡ zanie

aser ji:

1

java

-ea[:< pa kagename

>...|:<

lassname

>℄

klasaPosiadaja aMetodeMain

11

background image

2

java

-enableassertions

[:< pa kagename

>...|:< lassname

>℄

klasaPosiadaja aMetodeMain

1

publi

lass

TestAssertion

{

2

3

stati

int

age

=

-1;

4

5

publi

stati

void

main (String [℄

args )

{

6

assert

age

>=

0

:

"Not

orre t

value :

age

=

"

+

age;

7

System . out.println

(

"My

age

=

"

+

age );

8

}

9

}

Przykªad

20:

sr /pl/kiel e/tu/lab10/T

estAssertion.ja

v

a

{link}

Uru

homienie:

java

pl.kiel e

.tu. lab10 .TestAssertion

W

ynik

dziaªania:

My

age

=

-1

Uru

homienie:

java

-ea

pl.kiel e

.tu.lab10

.TestAssertion

W

ynik

dziaªania:

Ex eption

in

thread

"main "

java. lang .AssertionError

:

Not

orre t

value :

age

=

-1

at

pl.kiel e

.tu. lab10 .TestAssertion

.main (TestAssertion

.java :8)

Deasem

bla ja:

javap

-

pl.kiel e

.tu.lab10

.TestAssertion

W

ynik

deasem

bla ji:

Compiled

from

"TestAssertion

.java "

publi

lass

pl.kiel e . tu.lab10 . TestAssertion

{

stati

int

age;

stati

final

boolean

$assertionsDisabled

;

publi

pl.kiel e

.tu. lab10 .TestAssertion

();

Code :

0:

aload_0

1:

invokespe ial

#1

//

Method

java /lang /Obje t

."<init >":() V

4:

return

publi

stati

void

main ( java. lang. String [℄) ;

Code :

0:

getstati

#2

//

Field

\$assertionsDisabled

:Z

3:

ifne

41

6:

getstati

#3

//

Field

age :I

9:

ifge

41

12:

new

#4

//

lass

java /lang /AssertionError

15:

dup

16:

new

#5

//

lass

java /lang /StringBuilder

19:

dup

20:

invokespe ial

#6

//

Method

java /lang /StringBuilder

."< init >":() V

23:

ld

#7

//

String

Not

orre t

value :

age

=

12

background image

25:

invokevirtual

#8

//

Method

←֓

java/ lang/ StringBuilder

.append :(Ljava

/lang /String ;) Ljava /lang /StringBuilder

;

28:

getstati

#3

//

Field

age :I

...

6

R

TTI

Informa je

o

t

ypie

w

zasie

wyk

onania

(ang.

run-time

t

yp

e

information,

R

TTI)

p

ozw

ala

na

iden

t

yk

a j

t

yp

ó

w

i

wyk

orzyst

yw

anie

informa ji

o

ni

h

w

zasie

dziaªania

program

u.

Op

erator

instanceof

oraz

meto

da

isInstan e()

zostaªy

omó

wione

na

w

ze±niejszy

h

za

j ia

h.

Obiekt

Class

za

wiera

informa je

o

m.in.

k

onstrukta

h

(np.

getConstructors

()

,

getDeclaredConstructors

()

),

meto

da

h

(np.

getM ethods

()

,

getDeclaredM ethods

()

)

oraz

atrybuta

h

(p

ola

h)

klasy

(np.

getF ields

()

,

getDeclaredF ields

()

).

Sz zegóªy

dot

y z¡ e

klasy

Class

mo»na

znale¹¢

na

stronie:

h

ttp://do

s.ora le. om/ja

v

ase/7/do s/a

pi/ja

v

a/la

ng/

Class

.h

tml

1

publi

lass

TestRTTI

{

2

publi

int

i

=

1234;

3

stati

{

4

System . out.println

(

"Stati

init "

);

5

}

6

7

publi

TestRTTI

()

{

8

System . out.println

(

"Constru tor

TestRTTI

()"

) ;

9

}

10

11

publi

int

getI ()

{

12

System . out.println

(

"Method

getI ()"

) ;

13

return

i;

14

}

15

16

publi

stati

void

main (String [℄

args )

throws

Ex eption

{

17

Class <?>

t

=

null

;

18

t

=

Class .forName

(

"pl .kiel e .tu .lab10 .TestRTTI

"

) ;

19

//

Stati

init

20

Constru tor

<?>[℄

=

t.getConstru tors

() ;

21

System . out.println

(

"Constru tors

"

);

22

for

(

int

i

=

0;

i

<

.length ;

i++)

23

System

.out. println ( [i℄);

24

//

Constru tors

25

//

publi

TestRTTI

()

26

27

TestRTTI

instan e

=

( TestRTTI )

[0℄. newInstan e

(( Obje t [℄)

null

);

28

//

Constru tor

TestRTTI

()

29

30

Method [℄

m

=

t.getMethods

();

31

System . out.println

(

"Methods

"

);

32

for

(

int

i

=

0;

i

<

m .length ;

i++)

33

System

.out. println (m [i℄);

34

//

Methods

35

//

publi

stati

void

TestRTTI

.main (java .lang .String [℄)

...

36

//

publi

int

TestRTTI

.getI ()

37

//

publi

final

void

java .lang .Obje t .wait ()

...

38

//

publi

final

void

java .lang .Obje t .wait (long , int)

...

39

//

publi

final

native

void

java .lang .Obje t

.wait (long )

...

40

//

publi

native

int

java .lang .Obje t .hashCode

()

41

//

publi

final

native

java .lang .Class

java. lang .Obje t .getClass

()

42

//

publi

boolean

java .lang .Obje t . equals (java .lang .Obje t

)

43

//

publi

java .lang .String

java .lang .Obje t . toString ()

13

background image

44

//

publi

final

native

void

java .lang .Obje t

.notify ()

45

//

publi

final

native

void

java .lang .Obje t

.notifyAll

()

46

//

Method

getI ()

47

m[1℄. invoke ( instan e ,

(Obje t [℄)

null

);

48

//

Method

getI ()

49

Field [℄

f

=

t.getFields

() ;

50

System . out.println

(

"Fields

"

);

51

for

(

int

i

=

0;

i

<

f .length ;

i++)

52

System

.out. println (f [i℄);

53

//

Fields

54

//

publi

int

TestRTTI

.i

55

f[0℄. set (instan e

,

5678) ;

56

System . out.println

(f[0℄. get (instan e

));

57

//

5678

58

}

59

}

Przykªad

21:

sr /pl/kiel e/tu/lab10/T

estR

TTI.ja

v

a

{link}

7

A

dnota je

A

dnota je

(nazyw

ane

te»

metadan

ymi)

umo»liwia

umiesz zenie

do

datk

o

w

ej

informa ji

w

plik

a

h

¹ró-

dªo

wy

h.

Strategie

za

ho

w

ania

adnota ji

[1

℄:

ˆ

SOUR

CE



"A

dnota je

ze

strategi¡

SOUR

CE

jest

za

ho

wyw

ana

t

ylk

o

w

pliku

k

o

du

¹ró

dªo

w

ego.

Inn

ymi

sªo

wy

,

jest

p

omijana

w

trak

ie

k

ompila ji

k

o

du."

ˆ

CLASS



"A

dnota je

ze

strategi¡

SOUR

CE

jest

za

ho

wyw

ana

w

pliku

. lass

w

trak

ie

k

ompila ji.

Nie

jest

jednak

dostpna

dla

maszyn

y

wirtualnej

w

trak

ie

wyk

onania

program

u."

ˆ

R

UNTIME



"A

dnota je

ze

strategi¡

R

UNTIME

jest

za

ho

wyw

ana

w

pliku

. lass

w

trak

ie

k

ompila ji

i

jest

dostpna

dla

maszyn

y

wirtualnej

w

trak

ie

wyk

onania

program

u."

A

dnota je

mog¡

za

wiera¢

skªado

w

e,

np.

w

przykªado

w

ej

adnota ji

MyA

nnotation

to

id()

i

name()

:

1

Retention

(RetentionPoli y

. RUNTIME )

2

publi

interfa e

MyAnnotation

{

3

int

id() ;

4

5

String

name () ;

6

}

Przykªad

22:

sr /pl/kiel e/tu/lab10/MyAnnotation.ja

v

a

{link}

Ozna zenie

klasy

przy

p

omo

y

adnota ji:

1

MyAnnotation

(id

=

1234,

name

=

"ab d "

)

2

publi

lass

MyAnnotatedClass

{

3

}

Przykªad

23:

sr /pl/kiel e/tu/lab10/MyAnnotatedClass.ja

v

a

{link}

Od zytanie

adnota ji

przy

p

omo

y

reeksji:

1

publi

lass

MyAnnotationRefle tion

{

2

3

stati

Class < MyAnnotatedClass

>

lazz

=

MyAnnotatedClass

.

lass

;

4

5

publi

stati

void

main (String [℄

args )

throws

ClassNotFoundEx eption

{

6

Annotation

[℄

annotations

=

lazz .getAnnotations

() ;

14

background image

7

for

(Annotation

annotation

:

annotations

)

{

8

System

.out. println (

" Class

"

+

lazz

+

"

is

annotated

with

"

9

+

annotation

);

10

MyAnnotation

myA

=

lazz . getAnnotation

(MyAnnotation

.

lass

);

11

if

(myA

!=

null

)

12

System

.out .println (

"name

=

"

+

myA .name ()

13

+

",

id

=

"

+

myA .id() );

14

}

15

}

16

}

Przykªad

24:

sr /pl/kiel e/tu/lab10/MyAnnotationRee tion.ja

v

a

{link}

K

ompila ja

i

uru

homienie

aplik

a ji:

java

pl\ kiel e \tu \lab10 \MyAnnotation

.java

java

pl\ kiel e \tu \lab10 \MyAnnotatedClass

.java

java

pl\ kiel e \tu \lab10 \MyAnnotationRefle tion

.java

java

pl.kiel e

.tu. lab10 .MyAnnotationRefle tion

W

ynik

dziaªania:

Class

lass

pl .kiel e .tu .lab10 .MyAnnotatedClass

is

annotated

with

←֓

pl. kiel e .tu .lab10 .MyAnnotation

(id=1234,

name =ab d )

name

=

ab d ,

id

=

1234

Od zytanie

adnota ji

przy

p

omo

y

pro

esora

adnota ji:

1

publi

lass

MyAnnotationPro essor

extends

Abstra tPro essor

{

2

3

Class <MyAnnotation

>

annotation

=

MyAnnotation

.

lass

;

4

5

Override

6

publi

boolean

pro ess

(Set <?

extends

TypeElement

>

annotations

,

7

RoundEnvironment

roundEnv

)

{

8

9

Messager

messager

=

pro essingEnv

.getMessager

();

10

11

Set <?

extends

Element

>

elements

=

roundEnv

12

. getElementsAnnotatedWith

(annotation

) ;

13

14

for

(Element

element

:

elements

)

{

15

messager

.printMessage

(Kind .NOTE ,

" Class

"

+

element

16

+

"

is

annotated

with

"

+

annotation

) ;

17

MyAnnotation

myA

=

element

.getAnnotation

(MyAnnotation

.

lass

);

18

if

(myA

!=

null

)

19

messager

.printMessage

(Kind .NOTE ,

"name

=

"

+

myA .name ()

20

+

",

id

=

"

+

myA .id() );

21

}

22

return

true

;

23

}

24

25

Override

26

publi

Sour eVersion

getSupportedSour eVersion

()

{

27

return

Sour eVersion

. RELEASE_7

;

28

}

29

30

Override

31

publi

Set <String

>

getSupportedAnnotationTypes

()

{

32

HashSet

<String >

tmp

=

new

HashSet <String

>();

33

tmp .add (annotation

.getName

());

34

return

tmp;

15

background image

35

}

36

37

Override

38

publi

Set <String

>

getSupportedOptions

()

{

39

return

new

HashSet

<String

>();

40

}

41

42

}

Przykªad

25:

sr /pl/kiel e/tu/lab10/MyAnnotationPro

essor

.ja

v

a

{link}

K

ompila ja

i

uru

homienie

aplik

a ji:

java

pl\ kiel e \tu \lab10 \MyAnnotationPro essor

.java

java

-pro essor

pl .kiel e . tu.lab10 . MyAnnotationPro essor

pl \kiel e \ tu\lab10 \MyAnnotatedClass

.java

W

ynik

dziaªania:

Note :

Class

pl .kiel e .tu .lab10 .MyAnnotatedClass

is

annotated

with

interfa e

←֓

pl.kiel e

.tu. lab10 .MyAnnotation

Note :

name

=

ab d,

id

=

1234

8

T

est

y

jednostk

o

w

e

Mo»na

wyró»ni¢

nastpuj¡ e

p

oziom

y

testo

w

ania

oprogramo

w

ania

[9

℄:

ˆ

testo

w

anie

jednostk

o

w

e

"Przedmiotem

testo

w

ania

jednostk

o

w

ego

(unit

testing,

mo

dule

testing)

p

o

dsta

w

o

w

e

jednostki

pro-

gram

u

opisane

w

pro

jek

ie

sz zegóªo

wym.

P

osta¢

t

y

h

jednostek

zale»y

o

d

te

hnologii

implemen

ta ji



mog¡

b

nimi

p

o

dprogram

y

(pro

edury

,

funk

je)

napisane

w

jzyku

strukturaln

ym,

skrypt

y

SQL

alb

o

meto

dy

lub

klasy

zapisane

w

jzyku

obiekto

wym.

Celem

testo

w

ania

na

t

ym

p

oziomie

jest

spra

wdzenie

zgo

dno± i

dziaªania

wszystki

h

opra o

w

an

y

h

jednostek

z

i

h

sp

e yk

a j¡

wynik

a

j¡ a

z

pro

jektu,

oraz

wykry ie

i

usuni ie

jak

na

jwikszej

li zb

y

bªdó

w."

ˆ

testo

w

anie

in

tegra yjne

"P

oª¡ zenie

dw

ó

h

wsp

óªdziaªa

j¡ y

h

jednostek

t

w

orzy

no

w

¡

jednostk

,

w

której

uja

wnia

si

bª-

dy

zwi¡zane

z

niedopaso

w

aniem

me

hanizmó

w

i

h

wsp

óªpra y

.

Przedmiotem

dziaªa«

p

o

dejmo

w

an

y

h

p

o

d zas

testo

w

ania

in

tegra yjnego

(in

terfa e

testing)

jest

ª¡ zenie

jednostek

program

u

w

oraz

wiksze

k

omp

onen

t

y

i

spra

wdzanie

zgo

dno± i

i

h

dziaªania

ze

sp

e yk

a j¡

wynik

a

j¡ ¡

z

pro

jektu

ar

hitektury

oprogramo

w

ania.

Celem

testó

w

jest

spra

wdzenie

funk

jono

w

ania

in

terfejsó

w

(...)."

ˆ

testo

w

anie

systemo

w

e

"Przedmiotem

testo

w

ania

systemo

w

ego

(system

testing)

jest

aªo±¢

oprogramo

w

ania

zin

tegro

w

ana

i

za-

instalo

w

ana

w

o

dp

o

wiednim

±ro

do

wisku

wyk

ona

w

zym.

Celem

testó

w

jest

spra

wdzenie

zgo

dno± i

sp

o-

sobu

dziaªania

wszystki

h

funk

ji

oprogramo

w

ania

ze

sp

e yk

a j¡

oraz

w

eryk

a ja

inn

y

h

wªa± iw

o± i

system

u

okre±lon

y

h

przez

wymagania

niefunk

jonalne."

ˆ

testo

w

anie

ak

epta yjne

"T

esto

w

aniu

ak

epta yjnem

u

(a eptan e

testing)

p

o

dlega

oprogramo

w

anie

stano

wi¡ e

przedmiot

do-

sta

wy

dla

u»ytk

o

wnik

a,

zainstalo

w

ane

w

do

elo

wym

±ro

do

wisku

pra y

lub

w

±ro

do

wisku

imituj¡ ym

do

elo

w

e

±ro

do

wisk

o

pra y

oprogramo

w

ania.

Celem

testó

w

jest

spra

wdzenie

zgo

dno± i

dziaªania

z

wy-

maganiami

i

p

otrzebami

u»ytk

o

wnik

a.

F

orma

testó

w

mo»e

b

p

o

dobna

do

testó

w

systemo

wy

h,

jednak

pro

es

testo

w

ania

nie

jest

zorien

to

w

an

y

na

zna

jdo

w

anie

i

usu

w

anie

defektó

w,

le z

ra zej

na

zademonstro-

w

anie

i

zat

wierdzenie

pro

duktu

przez

u»ytk

o

wnik

a

oraz

ew

en

tualnie

dostro

jenie

do

jego

rze zywist

y

h

p

otrzeb."

St

w

orzenie

testu

jednostk

o

w

ego

dla

klasy

Cal ulator

przy

u»y iu

biblioteki

JUnit

w

±ro

do

wisku

E lipse

przebiega

w

nastpuj¡ y

sp

osób:

File

>

New

>

Other

>

Java



JUnit



JUnit

T

est

Case.

W

nastpuj¡ y

h

p

ola

h

nale»y

wpisa¢:

16

background image

"Class

under

test"



nazw



klasy

,

której

b

dzie

dot

y zyª

test

(np.

pl.kiel

e.tu.lab10.Cal ulator

),

"Pa kage"



nazw



pakietu

(np.

pl.kiel

e.tu.lab10

),

"Name"



nazw



klasy;

zazwy za

j

nazw

a

testu

jednostk

o

w

ego

to

nazw

a

klasy

,

której

dot

y zy

oraz

sªo

w

o

"T

est"

(np.

Cal ulatorT

est

).

P

o

na i±ni iu

"Next"

nale»y

zazna zy¢

meto

dy

,

który

h

b

d¡

dot

y zyªy

test

y

,

zyli

"mul(int,

int)"

i

"div(int,

int)".

W

i±nie ie

"Finish"

p

o

w

o

duje

wygenero

w

anie

klasy

Cal ulatorT

est.

W

k

olejn

ym

kroku

nale»y

dla

meto

d

testMul()

oraz

testDiv()

zast¡

pi¢

aktualne

iaªa

meto

d("fail("Not

yet

implemente

d");"

)

o

dp

o

wied-

nim

k

o

dem.

Uru

homienie

testu

nastpuje

p

oprzez

klikni ie

pra

wy

kla

wiszem

na

k

o

dzie

i

wybranie:

R

un

As

>

JUnit

T

est.

A

dnota je

zwi¡zane

z

JUnit

2

:

ˆ

T

est



sªu»y

do

ozna zania

meto

dy

jak

o

testu

jednostk

o

w

ego,

za

wiera

op

jonalne

skªado

w

e

exp

e

te

d

i

time

out

:



publi

abstr

a t

java.lang.Class<?

extends

java.lang.Thr

owable>

exp

e

te

d

op

jonalna

skªado

w

a

p

o

w

o

duj¡ a,

»e

wyw

oªanie

meto

dy

testo

w

ej

zak

o« zy

si

suk

esem

t

ylk

o

gdy

zgªosi

ona

wyj¡tek,

T

est

(exp

e

te

d

=

Ex

eption. lass)



publi

abstr

a t

long

time

out

op

jonalna

skªado

w

a

p

o

w

o

duj¡ a,

»e

wyw

oªanie

meto

dy

testo

w

ej

zak

o« zy

si

p

ora»k

¡,

je»eli

trw

aªo

ono

dªu»ej

ni»

p

o

dan

y

limit

zasu,

T

est(time

out=100)

ˆ

Before

meto

da

ozna zona

ta

adnota j¡

b

dzie

wyw

oªyw

ana

przed

meto

testo

w

¡,

ˆ

After

meto

da

ozna zona

ta

adnota j¡

b

dzie

wyw

oªyw

ana

p

o

meto

dzie

testo

w

ej,

ˆ

BeforeClass

meto

da

ozna zona

ta

adnota j¡

b

dzie

wyw

oªyw

ana

przed

wyw

oªaniem

pierwszej

meto

dy

testo

w

ej

z

tej

klasy

,

ˆ

AfterClass

meto

da

ozna zona

ta

adnota j¡

b

dzie

wyw

oªyw

ana

p

o

wyw

oªaniu

ostatniej

meto

dy

testo

w

ej

z

tej

klasy

,

ˆ

Ignore

meto

da

ozna zona

ta

adnota j¡

nie

zostanie

wyw

oªana

jak

o

test,

za

wiera

skªado

w

¡

value,

która

sªu»y

do

op

jonalnego

p

o

dania

p

o

w

o

du

dla zego

test

zostaª

zignoro

w

an

y

,



publi

abstr

a t

java.lang.String

value

Klasa

org.junit.Assert

3

za

wiera

zbiór

prze i¡»on

y

h

meto

daser ji

wyk

orzyst

yw

an

y

h

p

o

d zas

pisania

testó

w:

ˆ

assertArra

yEquals()

ˆ

assertEquals()

ˆ

assertF

alse()

ˆ

assertNotNull()

ˆ

assertNotSame()

ˆ

assertNull()

ˆ

assertThat()

2

h

ttp://junit.sour eforge.net/ja

v

ado

/

3

h

ttp://junit.sour eforge.net/ja

v

ado

/org /junit/Assert .h

tml

17

background image

ˆ

assertT

rue()

ˆ

fail()

Klasa

org.junit.Assume

4

za

wiera

zbiór

meto

d

sªu»¡ y

h

dla

wyra»ania

zaªo»e«

o

w

arunk

a

h,

dla

który

h

test

ma

zna zenie

(jest

w

a»n

y).

Je»eli

zaªo»enie

nie

jest

sp

eªnione,

to

nie

zna zy

to,

»e

k

o

d

jest

uszk

o

dzon

y

,

ale

»e

test

nie

dostar za

»adnej

u»yte znej

informa ji.

ˆ

assumeNoEx eption()

ˆ

assumeNotNull()

ˆ

assumeThat()

ˆ

assumeT

rue()

Przykªado

w

a

klasa:

1

pa kage

pl .kiel e . tu.lab10 ;

2

3

publi

lass

Cal ulator

{

4

5

publi

int

mul (

int

x,

int

y){

6

return

x

*

y ;

7

}

8

9

publi

int

div (

int

x,

int

y){

10

return

x

/

y ;

11

}

12

}

Przykªad

26:

sr /pl/kiel e/tu/lab10/Cal ulator.ja

v

a

{link}

Przykªado

w

a

klasa

testuj¡ a:

1

import

org .junit .Test ;

2

3

publi

lass

Cal ulatorTest

{

4

5

final

stati

int

CORRECT_ANSWER

=

4;

6

final

stati

int

NOT_CORRECT_ANSWER

=

1;

7

final

stati

int

EXPECTED_ANSWER

=

CORRECT_ANSWER

;

8

9

final

stati

boolean

THROW_EXCEPTION

=

false

;

10

11

Test (expe ted

=

Arithmeti Ex eption

.

lass

)

12

publi

void

testDiv

()

{

13

Cal ulator

al

=

new

Cal ulator

();

14

al .div (1,

0);

15

}

16

17

Test

18

publi

void

testMul

()

{

19

Cal ulator

al

=

new

Cal ulator

();

20

assertEquals

(EXPECTED_ANSWER

,

al . mul(2,

2) );

21

if

(THROW_EXCEPTION

)

22

throw

new

RuntimeEx eption

();

23

}

24

25

}

Przykªad

27:

sr /pl/kiel e/tu/lab10/Cal ulator

T

est.ja

v

a

{link}

4

h

ttp://junit.sour eforge.net/ja

v

ado

/org /junit/Assume.h

tml

18

background image

9

Przykªado

w

a

tre±¢

lab

oratorium

Zostanie

p

o

dana

w

p

ó¹niejszym

terminie.

1.

Prosz

st

w

orzy¢

aplik

a j

przedsta

wia

j¡ ¡

wszystkie

sp

osob

y

(9)

obsªugi

wyj¡tk

ó

w

przedsta

wione

w

tej

instruk

ji

lab

oratoryjnej.

2.

Prosz

st

w

orzy¢

aplik

a j

przedsta

wia

j¡ ¡

przykªad

zastoso

w

ania

aser ji.

3.

Prosz

st

w

orzy¢

przykªado

wy

testu

jednostk

o

wy

z

wyk

orzystaniem

biblioteki

JUnit.

Literatura

[1℄

S

hildt

Herb

ert,

Ja

v

a.

K

omp

endium

programist

y

.

W

ydanie

VI

I

I,

Helion,

2012

[2℄

E

k

el

Bru e,

Thinking

in

Ja

v

a,

Edy ja

p

olsk

a,

W

ydanie

IV,

Helion,

2006

[3℄

Horstmann

Ca

y

S.,

Cornell

Gary

,

Ja

v

a.

P

o

dsta

wy

,

W

ydanie

VI

I

I,

Helion,

2008

[4℄

Horstmann

Ca

y

S.,

Cornell

Gary

,

Ja

v

a.

T

e

hniki

zaa

w

anso

w

ane,

W

ydanie

VI

I

I,

Helion,

2009

[5℄

Blo

h

Josh

ua,

Ja

v

a.

Efekt

ywne

programo

w

anie.

W

ydanie

I

I,

Helion,

2009

[6℄

Bra

k

een

Da

vid,

Bark

er

Bret,

V

anhelsu

w

e

Lauren e,

Ja

v

a.

T

w

orzenie

gier,

Helion,

2004

[7℄

Sªo

wnik

terminó

w

z

zakresu

obiekto

w

o± i.

Kazimierz

Subieta,

Ak

ademi

k

a

O yna

W

yda

wni za

PLJ,

W

arsza

w

a

1999

[8℄

Sedgewi

k

Rob

ert,

W

a

yne

Kevin,

Algorytm

y

.

W

ydanie

IV,

Helion,

2012

[9℄

Krzysztof

Sa

ha,

In»ynieria

oprogramo

w

ania,

PWN,

2010

Materiaªy

do

przedmiotu

dostpne

na

strona

h:

h

ttp://a

hilles.tu.kiel e.pl/

h

ttp://w

eaii-

mo

o

dle.tu.kiel e.pl/

19


Document Outline


Wyszukiwarka

Podobne podstrony:
JAVA 06 Nieznany
2094 Nr,1 ,Plan,sytuacyjny,1 10 Nieznany (2)
Informatyka zadanie 14 06 10 Nieznany
BADANIE PRZEKAZNIKA RIzx 10 O C Nieznany
10 JALOWE ZMYWANIE KROCZAid 10 Nieznany (2)
Cechy fizyczne materialow id 10 Nieznany
C6 1hemoliza WWP 6 10 1 2 id 10 Nieznany
1 wzory testowanie hipotezid 10 Nieznany
facade (fasada) [java wzorce p Nieznany
1 10 ZYWIENIE do wyslaniaid 10 Nieznany (2)
Grudzinski Krawiec lab2 28 10 2 Nieznany
ZO material wyklad 22 10 Nieznany
1 Wspomnienia o F Bardonieid 10 Nieznany
a08 fizyka statystyczna (01 10) Nieznany
JAVA 08 Nieznany
JAVA 09 Nieznany
Chemia nieorganiczna zadania 10 Nieznany
notatki java 10
lozysko slizgowe iteracja id 10 Nieznany

więcej podobnych podstron