WEB开发网      濠电姷鏁告慨鐑藉极閸涘﹦绠鹃柍褜鍓氱换娑欐媴閸愬弶鎼愮痪鍓ф嚀閳规垿鎮╃€圭姴顥濋梺姹囧€楅崑鎾诲Φ閸曨垰绠涢柛顐f礃椤庡秹姊虹粙娆惧剳闁哥姵鍔欐俊鐢稿礋椤栨艾鍞ㄩ梺闈浤涙担鎻掍壕闁圭儤顨嗛埛鎺楁煕閺囥劌浜滄い蹇e弮閺屸€崇暆鐎n剛鏆犻柧浼欑到閵嗘帒顫濋悡搴d画缂佹鍨垮缁樻媴缁涘娈┑顔斤公缁犳捇銆佸鎰佹▌濠电姭鍋撳ù锝囩《閺€浠嬫煟濡鍤嬬€规悶鍎辫灃闁绘ê寮堕崯鐐电磼閸屾氨效鐎规洘绮忛ˇ瀵哥棯閹佸仮鐎殿喖鐖煎畷鐓庘槈濡警鐎崇紓鍌欑劍椤ㄥ棗鐣濋幖浣歌摕闁绘棃顥撻弳瀣煟濡も偓閻楀棗鈻撳Δ鍛拺閻犲洠鈧櫕鐏€闂佸搫鎳愭慨鎾偩閻ゎ垬浜归柟鐑樼箖閺呮繈姊洪棃娑氬婵☆偅鐟╅、娆掔疀閺冨倻鐦堥梺姹囧灲濞佳勭閿曞倹鐓曢柕濞垮劤閸╋絾顨ラ悙鏉戝妤犵偞锕㈤、娆撴嚃閳哄骞㈤梻鍌欐祰椤鐣峰Ο鑲╃煋妞ゆ棁锟ユ禍褰掓煙閻戞ɑ灏ù婊冪秺濮婅櫣绱掑Ο铏逛桓闂佹寧娲嶉弲娑滅亱闂佸憡娲﹂崹閬嶅煕閹达附鐓欓柤娴嬫櫅娴犳粌鈹戦垾鐐藉仮闁诡喗顨呴埥澶愬箳閹惧褰囩紓鍌欑贰閸犳牠顢栭崨鎼晣闁稿繒鍘х欢鐐翠繆椤栨粎甯涙繛鍛喘濮婄粯鎷呴悷閭﹀殝缂備浇顕ч崐鍨嚕缂佹ḿ绡€闁搞儯鍔嶅▍鍥⒑缁嬫寧婀扮紒瀣崌瀹曘垽鎮介崨濠勫幗闁瑰吋鐣崹濠氬煀閺囥垺鐓ユ慨妯垮煐閻撶喖鐓崶銉ュ姢缂佸宕电槐鎺旂磼濡偐鐣虹紓浣虹帛缁诲牆鐣峰鈧俊姝岊槺缂佽鲸绻堝缁樻媴缁涘娈愰梺鎼炲妺閸楀啿鐣烽鐐茬骇闁瑰濮靛▓楣冩⒑缂佹ɑ鈷掗柍宄扮墦瀵偊宕掗悙瀵稿幈闂佹娊鏁崑鎾绘煛閸涱喚鎳呮俊鍙夊姇铻i悶娑掑墲閺傗偓闂備胶绮崝鏇炍熸繝鍥у惞闁绘柨鐨濋弨鑺ャ亜閺冨洦顥夐柛鏂诲€濋幗鍫曟倷閻戞ḿ鍘遍梺鍝勬储閸斿本鏅堕鐐寸厱婵炲棗绻掔粻濠氭煛鐏炵晫效鐎规洦鍋婂畷鐔碱敆閳ь剙鈻嶉敐鍥╃=濞达絾褰冩禍鐐節閵忥絾纭炬い鎴濇川缁粯銈i崘鈺冨幍闁诲孩绋掑玻璺ㄧ不濮椻偓閺屻劌鈽夊Ο澶癸絾銇勯妸锝呭姦闁诡喗鐟╅、鏃堝礋椤撴繄绀勯梻鍌欐祰椤曟牠宕伴弽顐ょ濠电姴鍊婚弳锕傛煙椤栫偛浜版俊鑼额嚙閳规垿鍩勯崘銊хシ濡炪値鍘鹃崗妯侯嚕鐠囨祴妲堥柕蹇曞閳哄懏鐓忓璺虹墕閸旀挳鏌涢弬娆炬Ш缂佽鲸鎸婚幏鍛矙鎼存挸浜鹃柛婵勫劤閻挾鎲搁悧鍫濈瑨闁哄绶氶弻鐔煎礈瑜忕敮娑㈡煛閸涱喗鍊愰柡灞诲姂閹倝宕掑☉姗嗕紦 ---闂傚倸鍊搁崐鎼佸磹閻戣姤鍊块柨鏃堟暜閸嬫挾绮☉妯哄箻婵炲樊浜滈悡娑㈡煕濞戝崬骞樻い鏂挎濮婅櫣鎹勯妸銉︾彚闂佺懓鍤栭幏锟�
开发学院WEB开发Jsp 测试实践:Eclipse 之 JUnit 阅读

测试实践:Eclipse 之 JUnit

 2008-01-05 10:07:58 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹妞嬪孩顐芥慨姗嗗厳缂傛氨鎲稿鍫罕闂備礁婀遍搹搴ㄥ窗閺嶎偆涓嶆い鏍仦閻撱儵鏌i弴鐐测偓鍦偓姘炬嫹闂傚倸鍊搁崐鎼佸磹妞嬪海鐭嗗〒姘e亾妤犵偛顦甸弫鎾绘偐閹绘帞鈧參姊哄Ч鍥х仼闁诲繑鑹鹃悾鐑藉蓟閵夛妇鍘甸梺瑙勵問閸犳牠銆傛總鍛婄厱閹艰揪绱曟牎闂侀潧娲ょ€氫即鐛幒妤€绠f繝闈涘暙娴滈箖鏌i姀鈶跺湱澹曟繝姘厵闁绘劦鍓氶悘杈ㄤ繆閹绘帞澧涚紒缁樼洴瀹曞崬螖閸愬啠鍓濈换娑樼暆婵犱胶鏁栫紓浣介哺閹瑰洤鐣烽幒鎴僵闁瑰吀鐒﹂悗鎼佹⒒娴g儤鍤€闁搞倖鐗犻獮蹇涙晸閿燂拷濠电姷鏁告慨鐑藉极閸涘﹥鍙忔い鎾卞灩缁狀垶鏌涢幇闈涙灈鐎瑰憡绻冮妵鍕箻鐎靛摜鐣奸梺纭咁潐濞茬喎顫忕紒妯肩懝闁逞屽墮宀h儻顦查悡銈夋煏閸繃鍋繛宸簻鎯熼梺瀹犳〃閼冲爼宕濋敃鈧—鍐Χ閸℃鐟愰梺鐓庡暱閻栧ジ宕烘繝鍥у嵆闁靛骏绱曢崢顏堟⒑閹肩偛鍔楅柡鍛⊕缁傛帟顦寸紒杈ㄥ笚濞煎繘鍩℃担閿嬵潟闂備浇妗ㄩ悞锕傚箲閸ヮ剙鏋侀柟鍓х帛閺呮悂鏌ㄩ悤鍌涘闂傚倸鍊搁崐鎼佸磹妞嬪孩顐芥慨姗嗗厳缂傛氨鎲稿鍫罕闂備礁婀遍搹搴ㄥ窗閺嶎偆涓嶆い鏍仦閻撱儵鏌i弴鐐测偓鍦偓姘炬嫹  闂傚倸鍊搁崐鎼佸磹閻戣姤鍤勯柤鍝ユ暩娴犳氨绱撻崒娆掑厡缂侇噮鍨堕妴鍐川閺夋垹鍘洪悗骞垮劚椤︻垶宕¢幎鑺ョ厪闊洦娲栨牎闂佽瀵掗崜鐔奉潖閾忓湱纾兼俊顖氭惈椤矂姊虹拠鑼婵ǜ鍔戦崺鈧い鎺嶇閸ゎ剟鏌涢幘璺烘瀻妞ゎ偄绻愮叅妞ゅ繐瀚悗顓烆渻閵堝棙绀€闁瑰啿閰e畷婊勫鐎涙ǚ鎷洪梻渚囧亞閸嬫盯鎳熼娑欐珷妞ゆ柨澧界壕鐓庮熆鐠虹尨鍔熺紒澶庢閳ь剚顔栭崰鏍€﹂柨瀣╃箚婵繂鐭堝Σ鐑芥⒑缁嬫鍎愰柟鐟版搐铻為柛鎰╁妷濡插牊绻涢崱妤冪婵炲牊锕㈠缁樻媴妞嬪簼瑕嗙紓鍌氱М閸嬫挻绻涚€涙ḿ鐭ら柛鎾跺枛瀹曟椽鍩€椤掍降浜滈柟鐑樺灥閳ь剙缍婂鎶筋敆閸曨剛鍘遍柣搴秵娴滅兘鐓鍌楀亾鐟欏嫭纾婚柛妤€鍟块锝夊磹閻曚焦鞋闂備礁鎼Λ瀵哥不閹捐钃熼柕濞炬櫆閸嬪棝鏌涚仦鍓р槈妞ゅ骏鎷�
核心提示:这篇文章将给你介绍JUnit——一个工程测试调式的工具, 在介绍了了 测试驱动开发理论之后,测试实践:Eclipse 之 JUnit,我们继续介绍“怎样用Eclipse创建你的、JUnit Test”, 我们会用象"hello Word"一样简单例子来向你揭露JUnit Case,都用不着注释,现在

  这篇文章将给你介绍JUnit——一个工程测试调式的工具。 在介绍了了 测试驱动开发理论之后,我们继续介绍“怎样用Eclipse创建你的、JUnit Test”。 我们会用象"hello Word"一样简单例子来向你揭露JUnit Case。
  
  自动化测试(automated testing)在好多书籍中被介绍了,但很少注重讲怎样去组织这些测试。 当测试写的越多时,很难知道把这些测试放到哪或者用什么去调用它们。 在极限编程---Extreme PRogramming(XP),测试驱动开发 Test-Driven Development (TDD)盛行的时代,这成了一个很大的问题。 你可以把 测试驱动开发(TDD)认为是"Development through testing" 开发由经测试。
  
  TDD的主要条款:
  
  在任何代码片段之前,必须先写好自动检测这段代码功能的程序。既然代码不存在,那么测试在一开始就失败。
  
  在 测试通过之后,复制的代码必须删掉。
  
  象这样的方式每个程序员都可以应用,并不需要特定的方法论。但在我们开始写test之前, 值得我们注重的是,先考虑一下如何组织自动化测试。
  
  这里有几种我们需要考虑的测试
  
  单元测试(Unit test) :这些是为检查个别模块(比如classes类)服务的。 假如对象需要访问外部的数据源,比如Database,就需要通过一些模拟的对象(MOCK object)来模拟Database, (但这也只有在真实环境的数据与测试环境不同的时候。
  比如测试环境里面没有真实Datebase,就需要MOCK Object)
  
  用户测试 (Customer's test):这里是功能的,系统的并且认可的测试。系统中所有的行为检查都做为一个整体。 在XP理论中,这些测试,是由用户编写的,给出测试案例提纲。
  
  集成测试 (Itegration tests): 这些测试象是在用户测试和单元测试之间的十字路口。 集成测试帮助程序测试几个级别中交互。 ,Mock Object不会出现在集承测试中,他会增加测试时间。同样,集成测试也经常需要存在的特定的测试环境,比如从数据库中放一些测试数据。集成测试也许使用外部的lib。 Cactus就是这样一个J2EE集成的lib。 解释这些测试已经超出了本篇文章的范围,并且也需要具体的理论叙述,所以,你仅需要知道这种测试存在就可以了。
  
  开发测试(Developer's test) : 这种测试就是那些开发者校验 整段代码,新加的代码,新加的函数函数。 对于每个开发而言, 随时生成新的的测试去检查代码是很重要的。 组织这些测试和组织这些代码有着同样的重要性。
  
  至于本文其他地方,只要说到"测试",就是专指开发测试(Developer's test)。
  
  在开发期间, 一个程序员有时可能问自己:系统中这个行为有test么,这个test存在么,哪里可以找到这个test?每次发现错误,都是靠最基础修改bug而不是通过自动测试,这是一个典型的例子。 在这种情形下事情进展可能是:
  
  去找到这个函数的测试(可能测试已经写了,但里面还有一些小错误)
  假如这样的测试还没有,或者测试不能盖住这种错误,我们就写一个新的测试来盖住这种错误。
  现在 我们深信,程序在新的测试中不会通过。
  修复程序中的bug。
  再运行测试
  确定程序在测试中通过了。
  
  当然,可能出现各种各样的处理, 但思想必须很明确:你只需纠正那些被测试找出那些错误。
  
  现在,让我们告诉你一个开发人员怎样解决这种情形。 通过存在的功能性的测试
  
  我利用一些集成的开发环境(IDE)来查找 被修正那些类和方法的放在什么地方。
  
  制造一个已知的错误环境,来查找那些代码判定存在错误。
  
  最后但不是最不重要的,写好测试并且放到一个现有的测试类中去。 假如你不小心出了错误, 期望你和你的同事能注重到副本,并且纠正它
  
  都准就绪,开始建立测试了, 所以现在需要给测试取一个名称。 你可能说,“这不是问题: 在每个类面前加个Test就是了!” 但并不是那么简单的, 让我告诉你这样假如可能造成的问题:
  
  当时候我们在使用TDD的方式开发时, 需要测试的class或者method可能都不存在。
  
  也可能一个test 含盖了好几个方法,甚至好几个classes。
  
  这些仅仅是最普通的问题, 下面还有更多。
  
  给个在test命名上的建议: test 类的取名首先应该表达出这个类是一个test类,并且能确切的表示出他要检查哪些,留有这个原class名的味道。 其实这很轻易,请别担心这个名称会变的很长或者很丑陋,自己随便怎样取都可以。
  
  下面我们将使用Eclipse中的JUnit工具建立我们的第一个测试,假定你已经下载了这个产品的当前版本, 假如没有,你随时可以从它的官方网站(www.eclipse.org)下载。我们需要JUnit,你也可以从它的官方网站(www.junit.org)上下载,下载并解压缩到你硬盘中存放java libaries的地方。
  
  打开Eclipse.我们将建立一个新的工程的工作空间(workplace project) 点 File -> New ->Project,选择Java一路Next。 输入工程名称(project name),比如ProjectWithJUnit. 点击完成。 这样就建立了一个新工程,让我们配置一下我们的Eclipse,于是,我们把JUnit library 添加到build path. 点击 Project-->Properties, 选择Java Build Path Libraries, 点Add Exteranal JARs 选中JUnit.jar。 你将会看到JUnit将会出现在的屏幕上 libraries列表中。 点Okay,Eclipse将强制rebuild所有的build paths.
  
  我们已经预备好,开始写我们的"Hello World"了 . 让我们遵照TDD规范:在编码之前就建立测试。为了, 我们将假顶我们将要写的类名是HelloWorld 有一个返回字符串的方法 say().
  
  要建立这样一个test, 在ProjectWithJUnit标题上右键, 选择New -> Other,展开"Java", 选择JUnit. 在对话框的右边一拦里选择TestCase,接着点Next. 参见图1。
  
  
 测试实践:Eclipse 之 JUnit(图一)

  图1。 在Eclipse 中建立JUnit test
  在Test class:一拦里输入我们需要测试的class--HelloWorld。并且给Test case取个名称--- 比如,TestThatWeGetHelloWorldPrompt(是的,这看上去太长了,但是它能很清楚表达出它的意思) 点Finish完成。
  
  下面是 TestThatWeGetHelloWorldPrompt.java的代码:
  
  public class TestThatWeGetHelloWorldPrompt
  
  extends TestCase {
  
  public TestThatWeGetHelloWorldPrompt(
  
  String name) {
  
  super(name);
  
  }
  
  public void testSay() {
  
  HelloWorld hi = new HelloWorld();
  
  assertEquals("Hello World!", hi.say());
  
  }
  
  public static void main(String[] args) {
  
  junit.textui.TestRunner.run(
  
  TestThatWeGetHelloWorldPrompt.class);
  
  }
  
  }
  
  这个代码一点都不复杂,仅仅有一点点非凡。 不管怎样,让我们具体的检查它。 我们继续了JUnit的TestCase. (TestCase 在JUnit的javadoc里定义是"用来运行多个Test的固定装置")。 JUnit也定义了TestSuite 由于一组关联的TestCase组成..
  
  通过以下两步来建立我们简单的Test Case;
  
  建立Junit.framework.TestCase的实例.
  定义一些 以"test"开头的测试函数, 并且返回一空值.(比如 testWasTranscationSUCcessful(),testShow()等等).
  
  TestThatWeGetHelloWorldPrompt.java 同时遵循这些标准: 这些TestCase的子类含有一个testSay()的方法. 这个方法由assertEquals()方法调用, 用于检验say()的返回值(按照这里的做法返回应该是不一致,因为一开始建立的HelloWorld 我们让say()返回的值是null).
  
  main()主函数是用来运行test并且显示输出的结果. JUnit的TestRunnery以(swing.u)图形和本文(text.ui)的的方式来执行我们的test并反馈信息。我们就使用文本(text.ui),这个Eclipse肯定支持. (译注:这里可能翻译的不怎么好,所谓文本和图形,是指你在建立TestCase的时候,有一个选项,Which method stubs would you like to create,选择text.ui swing.uiawt.ui,一般是选择text.ui因为Eclipse肯定支持这个), 依照这些文本的信息,Eclipse同时会生成图形显示。(在Package Exploer的下面Tab条上会多个JUnit,点它就看到了:)。
  
  又一个所以,按照现在这样测试驱动的开发的做法, 一旦我们跑起了我们的test,我们应该看到返回一些错误的信息。 点Run-> Run as -> JUnit Test(注重啊, 这个TestThatWeGetHelloWorldPrompt.java应该在Package Explorer被点中,在左边那个window中),你点到的因该是JUnit window(就是下面的那个Tab条,注重不是Package Exploer),这样你就看到了JUnit window, 他会显示一个红色条,表示是一个失败的Test。 (假如你按了运行它没有自动转到这个窗口,你可以点做下Tab条 上的JUnit标签。)
  
 测试实践:Eclipse 之 JUnit(图二)

  一按运行, 太好了,果然出错了。好,现在正式开始建立用于工作的HelloWorld代码,---点New->Class,可能和原来的的重复,那就把原来的删掉。代码如下:
  
  HelloWolrd.java
  
  public class HelloWorld {
  
  public String say() {
  
  return("Hello World!");
  
  }
  
  }
  
  这及为简单的,都用不着注释。现在再来测试一下看看结果。就用上面的方法,点Run-> Run As Jnit. 在左边的JU

Tags:测试 实践 Eclipse

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接