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 的方法。在接下来的文章中,我会详细解释测试代码中的每一个细 节!
版权声明:本文标题:在Eclipse中使用JUnit4进行单元测试(初级篇) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1702954781h437281.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论