admin 管理员组

文章数量: 887021


2023年12月19日发(作者:收录导航系统源码)

在Eclipse 中使用JUnit4 进行单元测试(初级篇)

我们在编写大型程序的时候,需要写成千上万个方法或函数, 这些

函数的功能可能很强大,但我们在程序中只用到该函数的一小部分功 能,并且经过调试可以确定,这一小部分功能是正确的。但是,我们同 时应该确保每一个函数都完全正确,因为如果我们今后如果对程序进行 扩展,用到了某个函数的其他功能,而这个功能有

bug的话,那绝对 是一件非常郁闷的事情。所以说, 每编写完一个函数之后,都应该对这

个函数的方方面面进行测试,这样的测试我们称之为 单元测试。传统的 编程方式,进行单元测试是一件很麻烦的事情,你要重新写另外一个程 序,在该程序中调用你需要测试的方法,并且仔细观察运行结果,看看 是否有错。正因为如此麻烦,所以程序员们编写单元测试的热情不是很 高。于是有一个牛人推出了单元测试包, 大大简化了进行单元测试所要

做的工作,这就是JUnit4。本文简要介绍一下在

Eclipse3.2中使用

JUn it4进行单元测试的方法。

首先,我们来一个傻瓜式速成教程,不要问为什么,

先来体验一下单元测试的快感!

首先新建一个项目叫JUnit_Test,我们编写一个Calculator类, 这是一个能够简单实现加减乘除、平方、开方的计算器类,然后对这些 功能进行单元测试。这个类并不是很完美,我们故意保留了一些

用于演示,这些Bug在注释中都有说明。该类代码如下:

Follow Me

Bug

public class Calculator {

private static int result; //静态变量,用于存储运行结果

public void add( int n) {

在Eclipse 中使用JUnit4

result = result + n;进行单元测试(初级篇)

public void substract( int n) {

result = result - 1; //Bug: 正确的应该是 result =result -n

public void multiply( int n) {

//此方法尚未写好

public void divide( int n) {

result = result / n;

public void square( int n) {

result = n * n;

public void squareRoot( int n) { for (; ;) ; //Bug : 死循环

public void clear() { // 将结果清零

—result = 0;

卜艸public int getResult() {

return result;

第二步,将JUnit4单元测试包引入这个项目:在该项目上点右键, 点属性”如图:

Java - CalculetorTestI .java - ObjectWeb torn bo z

File Edit Scirce Reactor Maviqate Search Project Run Wfridcw, Help

■希

:;F孙如gt Explorer X

JUnft

書吐&〒 訂 &

Gaku^tWijsvaljO C^kul^rT^tlijoya

|::严

pr ivate stat lc Ca leu la. tor

@Beicre

calculstt-or

:占

Formaklest

''S日JI丁锻

2 GUITestl

r _r I

13

puti 1 ic void setUp () throws

calculator , clear ():

Exc&ptiDn

.'.I? ILaveRennennberWartls J T J

*戸

JUn#4 Testi

New

l> src

ft :P£ Sysl

卜» JUhit吟

'M/Cbck

Lzr Servers

s> 'U test

Co Into

叮pen in Mew Window

Open Type Hieurch^

void testAddU { Lculator .

add.(2);

sertEquals (5

f . getRea

Ctrl+<

Cop/ Quaff isd Nam&

^7=. Paste Ctrl+V

Celete

D&late

void tescSut)stracE()(

BLIILI Path

Source

Fefac^or

Lculator , ^dd.( 10):

^lt+Shift+-5

Alt+ShiFt-hT

raLct (2):

5er tEquals ( S

f ・ get-Res

^

Expirt.. i

_ Refresh

Close Pnoject

Close Unrelated Projects

FP* Multiply () Wot 7&c imp 1 erne nr

void teatMult ip 1y() {

Run As

Cetiuci

As

Erohle As

Validate

Tgam

Cofnpare With

Declaration

匚onsole

Restore From Lot ml Hestor^...

<|

PDE

TQils

」nv日Persisten匚亡

rg start

<□在EclipsecpMJUrit ..

尊一

在弹出的属性窗口中,首先在左边选择 “

上选择“标签,之后在最右边点击

Java Build Path

”,然后到右

“Add Library…按钮,如

Libraries下图所示:

然后在新弹出的对话框中选择

JUnit4并点击确定,如上图所示,JUnit4

软件包就被包含进我们这个项目了。

第三步,生成

JUnit测试框架:在

Eclipse的Package Explorer

中用右键点击该类弹出菜单,选择

所示:“New

a

JUnit Test Case

”如下图

」恥畑-Calc u later Java - ObjedWeb Lomboz

File Edit Source Refactor Mayigate Search Project

Rin

Window Help

JF

s; Package Explorer

=白

|JJ

匚 . J Cali^jl^torTest.j^va

7 0

25

26

Fortri^tTest

2 7'

yuhiic void aquareRoot(int n)

GUITmt

2S

GLUT&stl

39

llov eRerrietnberiA/cirds

JUnit+.Test

"Projedt.,,

&牡

F3

rf' Package

J tb sndy中口

Calculator, i&v a

Open Witt)

G Class

CalculatorTest.

Cpen Type Hierarchy

F4

& Interface

「Bf'- WE System Library [jre

= Q^>y

■> E&

;Source Folder

5十C

JUnit

&•;「...Copy Qualified Name

G Erimiri

I,吕

MyClock

taste

i

Ctri+V

Arinotaticn

l_ Servers

X Oelete

[> 丄

best

Delete

Guild Path ►

「JUnit Test 3uife

Source Air+Shi比+5 ►

'Untithd Text File

Refactor Alt+5hiFt+T ►

* Solder

a決

"Export..-

6 Example.,,

References

> _",宜恼匕

CieclaratforE > 1

在弹出的对话框中,进行相应的选择,如下图所示:

/ /5ug :死循环

1/牌堵果清零

.ay

rrhEllorrj b

.;aJLculator do

:witch olf the

.

U New JU nit Test Case

JUnit Test Case

Select the name cF the

DSN JUnit test uas乐

7QU have the options to spsciFy the izla^s under test and on the next page』to select

methods to be tested.

'Ne^JUril;

JUnit 1 test

INams:

Su;-ferdas5

CalculaterTesr

圳Wth n)ethod etutK would you like to create?

| setUpC ef o reGas$()

/ setUp()

1 tanstrurtor

tearDow nAFterda^sO

匚E爲匝亟磴

这里的东函

比较复杂>

先这么选着

后面再耕釋

Do you wan I: to add connmen ts as ccnf igured tn the prcperties

QF the cun ent

project?

Generate canrnenh

匚urwisr test: and^latar

Next a ^iniah Gancd

点击 下一步”后,系统会自动列出你这个类中包含的方法,选择你

要进行测试的方法。此例中,我们仅对 加、减、乘、除”四个方法进行

测试。如下图所示:

0 New JU nit Test

匚HSE

Test Methods

Select methods For which test rnethcdstubs should be created.

Available methods:

add(ini:)

substr^GtCint)

nultiplyCifit)

Select All

对这%f方就

iM行血试

Deselect All

divideCint)

□ • squ^re(irt)

匚合

sc|ijarefLoot(int) |~1 &

dear()

□ • getResjItO

□ ® Object

-=3

□口一口口口

cF ObjectO

getClas^O

• twchCcde()

Q e<|iJ5ls(0bie£t)

■',> clor»e()

4 mettiods selected.

J Create final method stubs

Create ta^ks for generated test methods

finish C^nicel

之后系统会自动生成一个新类

CalculatorTest

,里面包含一些空

的测试用例。你只需要将这些测试用例稍作修改即可使用。完整的

CalculatorTest

代码如下:

import static .*;

import ni ;

import nit .Ign ore;

import ;

public class CalculatorTest {private static Calculator calculator = new Calculator。;

第四步,运行测试代码:按照上述代码修改完毕后,我们在

CalculatorTest

类上点右键,选择 “

Run As

a

JUnit Tes来运行我们

的测试,如下图所示:

BJava -Calcifl^torTest■

- QbjectWeb Lomho?

File Edit SCLFU 亡

Fief actor Maviqate Search Project Run Windo忡

Help

聲〒丫乐・迸审

1 Package Explorer X

puialic void tiract ()( uG uu"古ox1.耳日d {1⑴;

2S

calculator•凸血巴匸匚厲uu f呂);

':丁

FormatT&st

^ssei'tFgijaJs (Br caJcLilfatOi1. QerResult.()

P jz? GUIT&51 I

GUITestl

V ILav eRememberWardt

£ JUr*+_Test

/

New

) Not iiLiplemented.**)

J ri_- ard/Cpp

Open

Open With

ltiply () {

1 4 2)

匸剖匚川日tcir’jdfd

Open Ty|ie Hierarnhy

0<5 * ® &

I >-B

L-- &:. JRE System Library [>ei.5-

> •BfcJJ戒

4

:: Copy

Copv Qualirird Name

Paste

X Delete

Cb-I+C

vide()(

'衫 MfClock

Servers

心test

OrkV

Delete

1(3J ;

-ide(2);

” c(a2cu2dtor. ^etResult 0

Biild Path

Source

Ak+5htft+5

Alt4ShiFt+T ►

r

.r i thitietieException. cla& jEy^eco () {

'ide (□);

kefeiericec

Declaratioris

.7 R.e£resh

kun As

Debug As

Profile

Valldabe

RIJQI

»>I

F5

11 -------- 1 -----------------------------------

Alt+ShiFt+Xj R

』]_Run on Server

«J7 Z JUn t lest

Alt+5hift+-JCJ

T

Team

Camparc With

FLepl^ce With

lilt

□nd ycpip. Ca fcukatorT est

Restore From Locd Hstcr^..L

Apactie Axis,..

Web Services

Properties

Alt+Enter

Eclipse中便用Unit…

Java -

C

运行结果如下:

进度条是红颜色表示发现错误,具体的测试结果在进度条上面有表

示共进行了

4个测试,其中1个测试被忽略,一个测试失败

至此,我们已经完整体验了在 Eclipse中使用JUnit

的方法。在接下来的文章中,我会详细解释测试代码中的每一个细

节!


本文标签: 进行 单元测试 测试 函数 方法