锘??xml version="1.0" encoding="utf-8" standalone="yes"?>77777午夜亚洲,国产精品亚洲一区二区在线观看,国产成人精品日本亚洲专http://m.tkk7.com/run2u/category/26927.htmlzh-cnMon, 29 Oct 2007 12:43:15 GMTMon, 29 Oct 2007 12:43:15 GMT60JUnit 4 鎶㈠厛鐪?/title><link>http://m.tkk7.com/run2u/archive/2007/10/29/156712.html</link><dc:creator>絀烘澂</dc:creator><author>絀烘澂</author><pubDate>Mon, 29 Oct 2007 08:09:00 GMT</pubDate><guid>http://m.tkk7.com/run2u/archive/2007/10/29/156712.html</guid><wfw:comment>http://m.tkk7.com/run2u/comments/156712.html</wfw:comment><comments>http://m.tkk7.com/run2u/archive/2007/10/29/156712.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/run2u/comments/commentRss/156712.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/run2u/services/trackbacks/156712.html</trackback:ping><description><![CDATA[from: http://www.ibm.com/developerworks/cn/java/j-junit4.html<br /> <br /> <p>JUnit 鐢?Kent Beck 鍜?Erich Gamma 寮鍙戯紝鍑犱箮姣棤鐤戦棶鏄縿浠婃墍寮鍙戠殑鏈閲嶈鐨勭涓夋柟 Java 搴撱傛濡?Martin Fowler 鎵璇達紝“鍦ㄨ蔣浠跺紑鍙戦鍩燂紝浠庢潵灝辨病鏈夊姝ゅ皯鐨勪唬鐮佽搗鍒頒簡濡傛閲嶈鐨勪綔鐢?#8221;銆侸Unit 寮曞騫朵績榪涗簡嫻嬭瘯鐨勭洓琛屻傜敱浜?JUnit錛孞ava 浠g爜鍙樺緱鏇村仴澹紝鏇村彲闈狅紝bug 涔熸瘮浠ュ墠鏇村皯銆侸Unit錛堝畠鏈韓鐨勭伒鎰熸潵鑷?Smalltalk 鐨?SUnit錛夎鐢熶簡璁稿 xUnit 宸ュ叿錛屽皢鍗曞厓嫻嬭瘯鐨勪紭鍔垮簲鐢ㄤ簬鍚勭璇█銆俷Unit (.NET)銆乸yUnit (Python)銆丆ppUnit (C++)銆乨Unit (Delphi) 浠ュ強鍏朵粬宸ュ叿錛屽獎鍝嶄簡鍚勭騫沖彴鍜岃璦涓婄殑紼嬪簭鍛樼殑嫻嬭瘯宸ヤ綔銆?/p> <p>鐒惰岋紝JUnit 浠呬粎鏄竴涓伐鍏瘋屽凡銆傜湡姝g殑浼樺娍鏉ヨ嚜浜?JUnit 鎵閲囩敤鐨勬濇兂鍜屾妧鏈紝鑰屼笉鏄鏋舵湰韜傚崟鍏冩祴璇曘佹祴璇曞厛琛岀殑緙栫▼鍜屾祴璇曢┍鍔ㄧ殑寮鍙戝茍闈為兘瑕佸湪 JUnit 涓疄鐜幫紝浠諱綍姣旇緝 GUI 鐨勭紪紼嬮兘蹇呴』鐢?Swing 鏉ュ畬鎴愩侸Unit 鏈韓鐨勬渶鍚庝竴嬈℃洿鏂板樊涓嶅鏄笁騫翠互鍓嶄簡銆傚敖綆″畠琚瘉鏄庢瘮澶у鏁版鏋舵洿鍋ュ.銆佹洿鎸佷箙錛屼絾鏄篃鍙戠幇浜?bug錛涜屾洿閲嶈鐨勬槸錛孞ava 涓嶆柇鍦ㄥ彂灞曘侸ava 璇█鐜板湪鏀寔娉涘瀷銆佹灇涓俱佸彲鍙橀暱搴﹀弬鏁板垪琛ㄥ拰娉ㄩ噴錛岃繖浜涚壒鎬т負鍙噸鐢ㄧ殑妗嗘灦璁捐甯︽潵浜嗘柊鐨勫彲鑳姐?/p> <p>JUnit 鐨勫仠婊炰笉鍓嶅茍娌℃湁琚偅浜涙兂瑕佸簾寮冨畠鐨勭▼搴忓憳鎵鎵撹觸銆傛寫鎴樿呭寘鎷?Bill Venners 鐨?Artima SuiteRunner 浠ュ強 Cedric Beust 鐨?TestNG 絳夈傝繖浜涘簱鏈変竴浜涘彲鍦堝彲鐐圭殑鐗規э紝浣嗘槸閮芥病鏈夎揪鍒?JUnit 鐨勭煡鍚嶅害鍜屽競鍦哄崰鏈変喚棰濄傚畠浠兘娌℃湁鍦ㄨ濡?Ant銆丮aven 鎴?Eclipse 涔嬬被鐨勪駭鍝佷腑鍏鋒湁騫挎硾鐨勫紑綆卞嵆鐢ㄦ敮鎸併傛墍浠?Beck 鍜?Gamma 鐫鎵嬪紑鍙戜簡涓涓柊鐗堟湰鐨?JUnit錛屽畠鍒╃敤 Java 5 鐨勬柊鐗規э紙灝ゅ叾鏄敞閲婏級鐨勪紭鍔匡紝浣垮緱鍗曞厓嫻嬭瘯姣旇搗鐢ㄦ渶鍒濈殑 JUnit 鏉ヨ鏇村姞綆鍗曘傜敤 Beck 鐨勮瘽鏉ヨ錛?#8220;JUnit 4 鐨勪富棰樻槸閫氳繃榪涗竴姝ョ畝鍖?JUnit錛岄紦鍔辨洿澶氱殑寮鍙戜漢鍛樼紪鍐欐洿澶氱殑嫻嬭瘯銆?#8221;JUnit 4 灝界淇濇寔浜嗕笌鐜版湁 JUnit 3.8 嫻嬭瘯濂椾歡鐨勫悜鍚庡吋瀹癸紝浣嗘槸瀹冧粛鐒舵壙璇烘槸鑷?JUnit 1.0 浠ユ潵 Java 鍗曞厓嫻嬭瘯鏂歸潰鏈閲嶅ぇ鐨勬敼榪涖?/p> <p><strong>娉ㄦ剰錛?/strong>璇ユ鏋剁殑鏀硅繘鏄浉褰撳墠娌跨殑銆傚敖綆?JUnit 4 鐨勫ぇ杞粨寰堟竻鏅幫紝浣嗘槸鍏剁粏鑺備粛鐒跺彲浠ユ敼鍙樸傝繖鎰忓懗鐫鏈枃鏄 JUnit 4 鎶㈠厛鐪嬶紝鑰屼笉鏄畠鐨勬渶緇堟晥鏋溿?/p> <p><a name="N10088"><span id="lfzrvfp" class="atitle">嫻嬭瘯鏂規硶</span></a></p> <p>浠ュ墠鎵鏈夌増鏈殑 JUnit 閮戒嬌鐢ㄥ懡鍚嶇害瀹氬拰鍙嶅皠鏉ュ畾浣嶆祴璇曘備緥濡傦紝涓嬮潰鐨勪唬鐮佹祴璇?1+1 絳変簬 2錛?/p> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td class="code-outline"> <pre class="displaycode">import junit.framework.TestCase; public class AdditionTest extends TestCase { private int x = 1; private int y = 1; public void testAddition() { int z = x + y; assertEquals(2, z); } }</pre> </td> </tr> </tbody> </table> <br /> <p>鑰屽湪 JUnit 4 涓紝嫻嬭瘯鏄敱 <code>@Test</code> 娉ㄩ噴鏉ヨ瘑鍒殑錛屽涓嬫墍紺猴細</p> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td class="code-outline"> <pre class="displaycode">import org.junit.Test; import junit.framework.TestCase; public class AdditionTest extends TestCase { private int x = 1; private int y = 1; @Test public void testAddition() { int z = x + y; assertEquals(2, z); } }</pre> </td> </tr> </tbody> </table> <br /> <p>浣跨敤娉ㄩ噴鐨勪紭鐐規槸涓嶅啀闇瑕佸皢鎵鏈夌殑鏂規硶鍛藉悕涓?<code>testFoo()</code>銆?code>testBar()</code>錛岀瓑絳夈備緥濡傦紝涓嬮潰鐨勬柟娉曚篃鍙互宸ヤ綔錛?/p> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td class="code-outline"> <pre class="displaycode">import org.junit.Test; import junit.framework.TestCase; public class AdditionTest extends TestCase { private int x = 1; private int y = 1; @Test public void additionTest() { int z = x + y; assertEquals(2, z); } }</pre> </td> </tr> </tbody> </table> <br /> <p>涓嬮潰榪欎釜鏂規硶涔熷悓鏍瘋兘澶熷伐浣滐細</p> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td class="code-outline"> <pre class="displaycode">import org.junit.Test; import junit.framework.TestCase; public class AdditionTest extends TestCase { private int x = 1; private int y = 1; @Test public void addition() { int z = x + y; assertEquals(2, z); } }</pre> </td> </tr> </tbody> </table> <br /> <p>榪欏厑璁告偍閬靛驚鏈閫傚悎鎮ㄧ殑搴旂敤紼嬪簭鐨勫懡鍚嶇害瀹氥備緥濡傦紝鎴戜粙緇嶇殑涓浜涗緥瀛愰噰鐢ㄧ殑綰﹀畾鏄紝嫻嬭瘯綾誨鍏舵祴璇曟柟娉曚嬌鐢ㄤ笌琚祴璇曠殑綾葷浉鍚岀殑鍚嶇О銆備緥濡傦紝<code>List.contains()</code> 鐢?<code>ListTest.contains()</code> 嫻嬭瘯錛?code>List.add()</code> 鐢?<code>ListTest.addAll()</code> 嫻嬭瘯錛岀瓑絳夈?/p> <p><code>TestCase</code> 綾諱粛鐒跺彲浠ュ伐浣滐紝浣嗘槸鎮ㄤ笉鍐嶉渶瑕佹墿灞曞畠浜嗐傚彧瑕佹偍鐢?<code>@Test</code> 鏉ユ敞閲婃祴璇曟柟娉曪紝灝卞彲浠ュ皢嫻嬭瘯鏂規硶鏀懼埌浠諱綍綾諱腑銆備絾鏄偍闇瑕佸鍏?<code>junit.Assert</code> 綾諱互璁塊棶鍚勭 assert 鏂規硶錛屽涓嬫墍紺猴細</p> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td class="code-outline"> <pre class="displaycode">import org.junit.Assert; public class AdditionTest { private int x = 1; private int y = 1; @Test public void addition() { int z = x + y; Assert.assertEquals(2, z); } }</pre> </td> </tr> </tbody> </table> <br /> <p>鎮ㄤ篃鍙互浣跨敤 JDK 5 涓柊鐗規э紙static import錛夛紝浣垮緱涓庝互鍓嶇増鏈竴鏍風畝鍗曪細</p> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td class="code-outline"> <pre class="displaycode">import static org.junit.Assert.assertEquals; public class AdditionTest { private int x = 1; private int y = 1; @Test public void addition() { int z = x + y; assertEquals(2, z); } }</pre> </td> </tr> </tbody> </table> <br /> <p>榪欑鏂規硶浣垮緱嫻嬭瘯鍙椾繚鎶ょ殑鏂規硶闈炲父瀹規槗錛屽洜涓烘祴璇曟渚嬬被鐜板湪鍙互鎵╁睍鍖呭惈鍙椾繚鎶ゆ柟娉曠殑綾諱簡銆?</p> <br /> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td><img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" /><br /> <img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" /></td> </tr> </tbody> </table> <table class="no-print" cellspacing="0" cellpadding="0" align="right"> <tbody> <tr align="right"> <td><img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" /><br /> <table cellspacing="0" cellpadding="0" border="0"> <tbody> <tr> <td valign="middle"><img height="16" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width="16" border="0" /><br /> </td> <td valign="top" align="right"><a class="fbox" ><strong>鍥為〉棣?/strong></a></td> </tr> </tbody> </table> </td> </tr> </tbody> </table> <br /> <br /> <p><a name="N100E6"><span id="frzhnzh" class="atitle">SetUp 鍜?TearDown</span></a></p> <p>JUnit 3 嫻嬭瘯榪愯紼嬪簭錛坱est runner錛変細鍦ㄨ繍琛屾瘡涓祴璇曚箣鍓嶈嚜鍔ㄨ皟鐢?<code>setUp()</code> 鏂規硶銆傝鏂規硶涓鑸細鍒濆鍖栧瓧孌碉紝鎵撳紑鏃ュ織璁板綍錛岄噸緗幆澧冨彉閲忥紝絳夌瓑銆備緥濡傦紝涓嬮潰鏄憳鑷?XOM 鐨?<code>XSLTransformTest</code> 涓殑 <code>setUp()</code> 鏂規硶錛?/p> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td class="code-outline"> <pre class="displaycode">protected void setUp() { System.setErr(new PrintStream(new ByteArrayOutputStream())); inputDir = new File("data"); inputDir = new File(inputDir, "xslt"); inputDir = new File(inputDir, "input"); }</pre> </td> </tr> </tbody> </table> <br /> <p>鍦?JUnit 4 涓紝鎮ㄤ粛鐒跺彲浠ュ湪姣忎釜嫻嬭瘯鏂規硶榪愯涔嬪墠鍒濆鍖栧瓧孌靛拰閰嶇疆鐜銆傜劧鑰岋紝瀹屾垚榪欎簺鎿嶄綔鐨勬柟娉曚笉鍐嶉渶瑕佸彨鍋?<code>setUp()</code>錛屽彧瑕佺敤 <code>@Before</code> 娉ㄩ噴鏉ユ寚紺哄嵆鍙紝濡備笅鎵紺猴細 </p> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td class="code-outline"> <pre class="displaycode">@Before protected void initialize() { System.setErr(new PrintStream(new ByteArrayOutputStream())); inputDir = new File("data"); inputDir = new File(inputDir, "xslt"); inputDir = new File(inputDir, "input"); }</pre> </td> </tr> </tbody> </table> <br /> <p>鐢氳嚦鍙互鐢?<code>@Before</code> 鏉ユ敞閲婂涓柟娉曪紝榪欎簺鏂規硶閮藉湪姣忎釜嫻嬭瘯涔嬪墠榪愯錛?</p> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td class="code-outline"> <pre class="displaycode">@Before protected void findTestDataDirectory() { inputDir = new File("data"); inputDir = new File(inputDir, "xslt"); inputDir = new File(inputDir, "input"); } @Before protected void redirectStderr() { System.setErr(new PrintStream(new ByteArrayOutputStream())); }</pre> </td> </tr> </tbody> </table> <br /> <p>娓呴櫎鏂規硶涓庢綾諱技銆傚湪 JUnit 3 涓紝鎮ㄤ嬌鐢?<code>tearDown()</code> 鏂規硶錛岃鏂規硶綾諱技浜庢垜鍦?XOM 涓負娑堣楀ぇ閲忓唴瀛樼殑嫻嬭瘯鎵浣跨敤鐨勬柟娉曪細</p> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td class="code-outline"> <pre class="displaycode">protected void tearDown() { doc = null; System.gc(); } </pre> </td> </tr> </tbody> </table> <br /> <p>瀵逛簬 JUnit 4錛屾垜鍙互緇欏畠鍙栦竴涓洿鑷劧鐨勫悕縐幫紝騫剁敤 <code>@After</code> 娉ㄩ噴瀹冿細 </p> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td class="code-outline"> <pre class="displaycode">@After protected void disposeDocument() { doc = null; System.gc(); } </pre> </td> </tr> </tbody> </table> <br /> <p>涓?<code>@Before</code> 涓鏍鳳紝涔熷彲浠ョ敤 <code>@After</code> 鏉ユ敞閲婂涓竻闄ゆ柟娉曪紝榪欎簺鏂規硶閮藉湪姣忎釜嫻嬭瘯涔嬪悗榪愯銆?/p> <p>鏈鍚庯紝鎮ㄤ笉鍐嶉渶瑕佸湪瓚呯被涓樉寮忚皟鐢ㄥ垵濮嬪寲鍜屾竻闄ゆ柟娉曪紝鍙瀹冧滑涓嶈瑕嗙洊鍗沖彲錛屾祴璇曡繍琛岀▼搴忓皢鏍規嵁闇瑕佽嚜鍔ㄤ負鎮ㄨ皟鐢ㄨ繖浜涙柟娉曘傝秴綾諱腑鐨?<code>@Before</code> 鏂規硶鍦ㄥ瓙綾諱腑鐨?<code>@Before</code> 鏂規硶涔嬪墠琚皟鐢紙榪欏弽鏄犱簡鏋勯犲嚱鏁拌皟鐢ㄧ殑欏哄簭錛夈?code>@After</code> 鏂規硶浠ュ弽鏂瑰悜榪愯錛氬瓙綾諱腑鐨勬柟娉曞湪瓚呯被涓殑鏂規硶涔嬪墠琚皟鐢ㄣ傚惁鍒欙紝澶氫釜 <code>@Before</code> 鎴?<code>@After</code> 鏂規硶鐨勭浉瀵歸『搴忓氨寰椾笉鍒頒繚璇併?/p> <p><a name="N10151"><span id="tvrnphx" class="smalltitle">濂椾歡鑼冨洿鐨勫垵濮嬪寲</span></a></p> <p>JUnit 4 涔熷紩鍏ヤ簡涓涓?JUnit 3 涓病鏈夌殑鏂扮壒鎬э細綾昏寖鍥寸殑 <code>setUp()</code> 鍜?<code>tearDown()</code> 鏂規硶銆備換浣曠敤 <code>@BeforeClass</code> 娉ㄩ噴鐨勬柟娉曢兘灝嗗湪璇ョ被涓殑嫻嬭瘯鏂規硶榪愯涔嬪墠鍒氬ソ榪愯涓嬈★紝鑰屼換浣曠敤 <code>@AfterClass</code> 娉ㄩ噴鐨勬柟娉曢兘灝嗗湪璇ョ被涓殑鎵鏈夋祴璇曢兘榪愯涔嬪悗鍒氬ソ榪愯涓嬈°?/p> <p>渚嬪錛屽亣璁劇被涓殑姣忎釜嫻嬭瘯閮戒嬌鐢ㄤ竴涓暟鎹簱榪炴帴銆佷竴涓綉緇滆繛鎺ャ佷竴涓潪甯稿ぇ鐨勬暟鎹粨鏋勶紝鎴栬呰繕鏈変竴浜涘浜庡垵濮嬪寲鍜屼簨鎯呭畨鎺掓潵璇存瘮杈冩槀璐電殑鍏朵粬璧勬簮銆備笉瑕佸湪姣忎釜嫻嬭瘯涔嬪墠閮介噸鏂板垱寤哄畠錛屾偍鍙互鍒涘緩瀹冧竴嬈★紝騫惰繕鍘熷畠涓嬈°傝鏂規硶灝嗕嬌寰楁湁浜涙祴璇曟渚嬭繍琛岃搗鏉ュ揩寰楀銆備緥濡傦紝褰撴垜嫻嬭瘯璋冪敤絎笁鏂瑰簱鐨勪唬鐮佷腑鐨勯敊璇鐞嗘椂錛屾垜閫氬父鍠滄鍦ㄦ祴璇曞紑濮嬩箣鍓嶉噸瀹氬悜 <code>System.err</code>錛屼互渚胯緭鍑轟笉琚鏈熺殑閿欒娑堟伅鎵撲貢銆傜劧鍚庢垜鍦ㄦ祴璇曠粨鏉熷悗榪樺師瀹冿紝濡備笅鎵紺猴細</p> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td class="code-outline"> <pre class="displaycode">// This class tests a lot of error conditions, which // Xalan annoyingly logs to System.err. This hides System.err // before each test and restores it after each test. private PrintStream systemErr; @BeforeClass protected void redirectStderr() { systemErr = System.err; // Hold on to the original value System.setErr(new PrintStream(new ByteArrayOutputStream())); } @AfterClass protected void tearDown() { // restore the original value System.setErr(systemErr); }</pre> </td> </tr> </tbody> </table> <br /> <p>娌℃湁蹇呰鍦ㄦ瘡涓祴璇曚箣鍓嶅拰涔嬪悗閮借繖鏍峰仛銆備絾鏄竴瀹氳灝忓績瀵瑰緟榪欎釜鐗規с傚畠鏈夊彲鑳戒細榪濆弽嫻嬭瘯鐨勭嫭绔嬫э紝騫跺紩鍏ラ潪棰勬湡鐨勬販涔便傚鏋滀竴涓祴璇曞湪鏌愮紼嬪害涓婃敼鍙樹簡 <code>@BeforeClass</code> 鎵鍒濆鍖栫殑涓涓璞★紝閭d箞瀹冩湁鍙兘浼氬獎鍝嶅叾浠栨祴璇曠殑緇撴灉銆傚畠鏈夊彲鑳藉湪嫻嬭瘯濂椾歡涓紩鍏ラ『搴忎緷璧栵紝騫墮殣钘?bug銆備笌浠諱綍浼樺寲涓鏍鳳紝鍙湪鍓栨瀽鍜屽熀鍑嗘祴璇曡瘉鏄庢偍鍏鋒湁瀹為檯鐨勯棶棰樹箣鍚庢墠瀹炵幇榪欎竴鐐廣傝繖灝辨槸璇達紝鎴戠湅鍒頒簡涓嶆涓涓祴璇曞浠惰繍琛屾椂闂村姝や箣闀匡紝浠ヨ嚦涓嶈兘鍍忓畠鎵闇瑕佺殑閭f牱緇忓父榪愯錛屽挨鍏舵槸閭d簺闇瑕佸緩绔嬪緢澶氱綉緇滃拰鏁版嵁搴撹繛鎺ョ殑嫻嬭瘯銆傦紙渚嬪錛孡imeWire 嫻嬭瘯濂椾歡榪愯鏃墮棿瓚呰繃涓ゅ皬鏃躲傦級瑕佸姞蹇繖浜涙祴璇曞浠訛紝浠ヤ究紼嬪簭鍛樺彲浠ユ洿鍔犵粡甯稿湴榪愯瀹冧滑錛屾偍鍙互鍋氱殑灝辨槸鍑忓皯 bug銆?/p> <br /> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td><img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" /><br /> <img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" /></td> </tr> </tbody> </table> <table class="no-print" cellspacing="0" cellpadding="0" align="right"> <tbody> <tr align="right"> <td><img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" /><br /> <table cellspacing="0" cellpadding="0" border="0"> <tbody> <tr> <td valign="middle"><img height="16" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width="16" border="0" /><br /> </td> <td valign="top" align="right"><a class="fbox" ><strong>鍥為〉棣?/strong></a></td> </tr> </tbody> </table> </td> </tr> </tbody> </table> <br /> <br /> <p><a name="N1017C"><span id="jrdfjhv" class="atitle">嫻嬭瘯寮傚父</span></a></p> <p>寮傚父嫻嬭瘯鏄?JUnit 4 涓殑鏈澶ф敼榪涖傛棫寮忕殑寮傚父嫻嬭瘯鏄湪鎶涘嚭寮傚父鐨勪唬鐮佷腑鏀懼叆 <code>try</code> 鍧楋紝鐒跺悗鍦?<code>try</code> 鍧楃殑鏈熬鍔犲叆涓涓?<code>fail()</code> 璇彞銆備緥濡傦紝璇ユ柟娉曟祴璇曡闆墮櫎鎶涘嚭涓涓?<code>ArithmeticException</code>錛?/p> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td class="code-outline"> <pre class="displaycode">public void testDivisionByZero() { try { int n = 2 / 0; fail("Divided by zero!"); } catch (ArithmeticException success) { assertNotNull(success.getMessage()); } }</pre> </td> </tr> </tbody> </table> <br /> <p>璇ユ柟娉曚笉浠呴毦鐪嬶紝鑰屼笖璇曞浘鎸戞垬浠g爜瑕嗙洊宸ュ叿錛屽洜涓轟笉綆℃祴璇曟槸閫氳繃榪樻槸澶辮觸錛屾繪湁涓浜涗唬鐮佷笉琚墽琛屻傚湪 JUnit 4 涓紝鎮ㄧ幇鍦ㄥ彲浠ョ紪鍐欐姏鍑哄紓甯哥殑浠g爜錛屽茍浣跨敤娉ㄩ噴鏉ュ0鏄庤寮傚父鏄鏈熺殑錛?</p> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td class="code-outline"> <pre class="displaycode">@Test(expected=ArithmeticException.class) public void divideByZero() { int n = 2 / 0; }</pre> </td> </tr> </tbody> </table> <br /> <p>濡傛灉璇ュ紓甯告病鏈夋姏鍑猴紙鎴栬呮姏鍑轟簡涓涓笉鍚岀殑寮傚父錛夛紝閭d箞嫻嬭瘯灝卞皢澶辮觸銆備絾鏄鏋滄偍鎯寵嫻嬭瘯寮傚父鐨勮緇嗘秷鎭垨鍏朵粬灞炴э紝鍒欎粛鐒墮渶瑕佷嬌鐢ㄦ棫寮忕殑 <code>try-catch</code> 鏍峰紡銆?/p> <br /> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td><img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" /><br /> <img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" /></td> </tr> </tbody> </table> <table class="no-print" cellspacing="0" cellpadding="0" align="right"> <tbody> <tr align="right"> <td><img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" /><br /> <table cellspacing="0" cellpadding="0" border="0"> <tbody> <tr> <td valign="middle"><img height="16" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width="16" border="0" /><br /> </td> <td valign="top" align="right"><a class="fbox" ><strong>鍥為〉棣?/strong></a></td> </tr> </tbody> </table> </td> </tr> </tbody> </table> <br /> <br /> <p><a name="N101A7"><span id="jxjlxfd" class="atitle">琚拷鐣ョ殑嫻嬭瘯</span></a></p> <p>涔熻鎮ㄦ湁涓涓祴璇曡繍琛岀殑鏃墮棿闈炲父鍦伴暱銆備笉鏄榪欎釜嫻嬭瘯搴旇榪愯寰楁洿蹇紝鑰屾槸璇村畠鎵鍋氱殑宸ヤ綔浠庢牴鏈笂姣旇緝澶嶆潅鎴栫紦鎱€傞渶瑕佽闂繙紼嬬綉緇滄湇鍔″櫒鐨勬祴璇曢氬父閮藉睘浜庤繖涓綾匯傚鏋滄偍涓嶅湪鍋氬彲鑳戒細涓柇璇ョ被嫻嬭瘯鐨勪簨鎯咃紝閭d箞鎮ㄥ彲鑳芥兂瑕佽煩榪囪繍琛屾椂闂撮暱鐨勬祴璇曟柟娉曪紝浠ョ緝鐭紪璇?嫻嬭瘯-璋冭瘯鍛ㄦ湡銆傛垨鑰呬篃璁告槸涓涓洜涓鴻秴鍑烘偍鐨勬帶鍒惰寖鍥寸殑鍘熷洜鑰屽け璐ョ殑嫻嬭瘯銆備緥濡傦紝W3C XInclude 嫻嬭瘯濂椾歡嫻嬭瘯 Java 榪樹笉鏀寔鐨勪竴浜?Unicode 緙栫爜鐨勮嚜鍔ㄨ瘑鍒備笉蹇呰佹槸琚揩鐩綇閭d簺綰㈣壊娉㈡氮綰匡紝榪欑被嫻嬭瘯鍙互琚敞閲婁負 <code>@Ignore</code>錛屽涓嬫墍紺猴細</p> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td class="code-outline"> <pre class="displaycode">// Java doesn't yet support // the UTF-32BE and UTF32LE encodings @Ignore public void testUTF32BE() throws ParsingException, IOException, XIncludeException { File input = new File( "data/xinclude/input/UTF32BE.xml" ); Document doc = builder.build(input); Document result = XIncluder.resolve(doc); Document expectedResult = builder.build( new File(outputDir, "UTF32BE.xml") ); assertEquals(expectedResult, result); }</pre> </td> </tr> </tbody> </table> <br /> <p>嫻嬭瘯榪愯紼嬪簭灝嗕笉榪愯榪欎簺嫻嬭瘯錛屼絾鏄畠浼氭寚鍑鴻繖浜涙祴璇曡璺寵繃浜嗐備緥濡傦紝褰撲嬌鐢ㄦ枃鏈晫闈㈡椂錛屼細杈撳嚭涓涓?#8220;I”錛堜唬琛?ignore錛夛紝鑰屼笉鏄負閫氳繃鐨勬祴璇曡緭鍑烘墍緇忓巻鐨勬椂闂達紝涔熶笉鏄負澶辮觸鐨勬祴璇曡緭鍑?#8220;E”錛?/p> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td class="code-outline"> <pre class="displaycode">$ java -classpath .:junit.jar org.junit.runner.JUnitCore nu.xom.tests.XIncludeTest JUnit version 4.0rc1 .....I.. Time: 1.149 OK (7 tests)</pre> </td> </tr> </tbody> </table> <br /> <p>浣嗘槸涓瀹氳灝忓績銆傛渶鍒濈紪鍐欒繖浜涙祴璇曞彲鑳芥湁涓瀹氱殑鍘熷洜銆傚鏋滄案榪滃拷鐣ヨ繖浜涙祴璇曪紝閭d箞瀹冧滑鏈熸湜嫻嬭瘯鐨勪唬鐮佸彲鑳戒細涓柇錛屽茍涓旇繖鏍風殑涓柇鍙兘涓嶈兘琚嫻嬪埌銆傚拷鐣ユ祴璇曞彧鏄竴涓潈瀹滀箣璁★紝涓嶆槸浠諱綍闂鐨勭湡姝hВ鍐蟲柟妗堛?</p> <br /> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td><img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" /><br /> <img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" /></td> </tr> </tbody> </table> <table class="no-print" cellspacing="0" cellpadding="0" align="right"> <tbody> <tr align="right"> <td><img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" /><br /> <table cellspacing="0" cellpadding="0" border="0"> <tbody> <tr> <td valign="middle"><img height="16" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width="16" border="0" /><br /> </td> <td valign="top" align="right"><a class="fbox" ><strong>鍥為〉棣?/strong></a></td> </tr> </tbody> </table> </td> </tr> </tbody> </table> <br /> <br /> <p><a name="N101C2"><span id="tjvfrzx" class="atitle">鏃墮棿嫻嬭瘯</span></a></p> <p>嫻嬭瘯鎬ц兘鏄崟鍏冩祴璇曟渶涓虹棝鑻︾殑鏂歸潰涔嬩竴銆侸Unit 4 娌℃湁瀹屽叏瑙e喅榪欎釜闂錛屼絾鏄畠瀵硅繖涓棶棰樻湁鎵甯姪銆傛祴璇曞彲浠ョ敤涓涓秴鏃跺弬鏁版潵娉ㄩ噴銆傚鏋滄祴璇曡繍琛岀殑鏃墮棿瓚呰繃鎸囧畾鐨勬縐掓暟錛屽垯嫻嬭瘯澶辮觸銆備緥濡傦紝濡傛灉嫻嬭瘯鑺辮垂瓚呰繃鍗婄鏃墮棿鍘繪煡鎵句互鍓嶈緗殑涓涓枃妗d腑鐨勬墍鏈夊厓绱狅紝閭d箞璇ユ祴璇曞け璐ワ細</p> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td class="code-outline"> <pre class="displaycode">@Test(timeout=500) public void retrieveAllElementsInDocument() { doc.query("http://*"); } </pre> </td> </tr> </tbody> </table> <br /> <p>闄や簡綆鍗曠殑鍩哄噯嫻嬭瘯涔嬪錛屾椂闂存祴璇曚篃瀵圭綉緇滄祴璇曞緢鏈夌敤銆傚湪涓涓祴璇曡瘯鍥捐繛鎺ュ埌鐨勮繙紼嬩富鏈烘垨鏁版嵁搴撳畷鏈烘垨鍙樻參鏃訛紝鎮ㄥ彲浠ュ拷鐣ヨ嫻嬭瘯錛屼互渚夸笉闃誨鎵鏈夊叾浠栫殑嫻嬭瘯銆傚ソ鐨勬祴璇曞浠舵墽琛屽緱瓚沖蹇紝浠ヨ嚦紼嬪簭鍛樺彲浠ュ湪姣忎釜嫻嬭瘯鍙戠敓閲嶅ぇ鍙樺寲涔嬪悗榪愯榪欎簺嫻嬭瘯錛屾湁鍙兘涓澶╄繍琛屽嚑鍗佹銆傝緗竴涓秴鏃朵嬌寰楄繖涓鐐規洿鍔犲彲琛屻備緥濡傦紝濡傛灉瑙f瀽 http://www.ibiblio.org/xml 鑺辮垂浜嗚秴榪?2 縐掞紝閭d箞涓嬮潰鐨勬祴璇曞氨浼氳秴鏃訛細</p> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td class="code-outline"> <pre class="displaycode">@Test(timeout=2000) public void remoteBaseRelativeResolutionWithDirectory() throws IOException, ParsingException { builder.build("http://www.ibiblio.org/xml"); } </pre> </td> </tr> </tbody> </table> <br /> <br /> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td><img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" /><br /> <img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" /></td> </tr> </tbody> </table> <table class="no-print" cellspacing="0" cellpadding="0" align="right"> <tbody> <tr align="right"> <td><img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" /><br /> <table cellspacing="0" cellpadding="0" border="0"> <tbody> <tr> <td valign="middle"><img height="16" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width="16" border="0" /><br /> </td> <td valign="top" align="right"><a class="fbox" ><strong>鍥為〉棣?/strong></a></td> </tr> </tbody> </table> </td> </tr> </tbody> </table> <br /> <br /> <p><a name="N101D6"><span id="zfzbvbh" class="atitle">鏂扮殑鏂█</span></a></p> <p>JUnit 4 涓烘瘮杈冩暟緇勬坊鍔犱簡涓や釜 <code>assert()</code> 鏂規硶錛?/p> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td class="code-outline"> <pre class="displaycode">public static void assertEquals(Object[] expected, Object[] actual) public static void assertEquals(String message, Object[] expected, Object[] actual) </pre> </td> </tr> </tbody> </table> <br /> <p>榪欎袱涓柟娉曚互鏈鐩存帴鐨勬柟寮忔瘮杈冩暟緇勶細濡傛灉鏁扮粍闀垮害鐩稿悓錛屼笖姣忎釜瀵瑰簲鐨勫厓绱犵浉鍚岋紝鍒欎袱涓暟緇勭浉絳夛紝鍚﹀垯涓嶇浉絳夈傛暟緇勪負絀虹殑鎯呭喌涔熶綔浜嗚冭檻銆?</p> <br /> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td><img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" /><br /> <img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" /></td> </tr> </tbody> </table> <table class="no-print" cellspacing="0" cellpadding="0" align="right"> <tbody> <tr align="right"> <td><img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" /><br /> <table cellspacing="0" cellpadding="0" border="0"> <tbody> <tr> <td valign="middle"><img height="16" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width="16" border="0" /><br /> </td> <td valign="top" align="right"><a class="fbox" ><strong>鍥為〉棣?/strong></a></td> </tr> </tbody> </table> </td> </tr> </tbody> </table> <br /> <br /> <p><a name="N101EA"><span id="vdnprrf" class="atitle">闇瑕佽ˉ鍏呯殑鍦版柟</span></a></p> <p>JUnit 4 鍩烘湰涓婃槸涓涓柊妗嗘灦錛岃屼笉鏄棫妗嗘灦鐨勫崌綰х増鏈侸Unit 3 寮鍙戜漢鍛樺彲鑳戒細鎵懼埌涓浜涘師鏉ユ病鏈夌殑鐗規с?</p> <p>鏈鏄庢樉鐨勫垹鑺傚氨鏄?GUI 嫻嬭瘯榪愯紼嬪簭銆傚鏋滄偍鎯沖湪嫻嬭瘯閫氳繃鏃剁湅鍒拌祻蹇冩偊鐩殑緇胯壊娉㈡氮綰匡紝鎴栬呭湪嫻嬭瘯澶辮觸鏃剁湅鍒頒護浜虹劍铏戠殑綰㈣壊娉㈡氮綰匡紝閭d箞鎮ㄩ渶瑕佷竴涓叿鏈夐泦鎴?JUnit 鏀寔鐨?IDE錛屾瘮濡?Eclipse銆備笉綆℃槸 Swing 榪樻槸 AWT 嫻嬭瘯榪愯紼嬪簭閮戒笉浼氳鍗囩駭鎴栨崋緇戝埌 JUnit 4 涓?</p> <p>涓嬩竴涓儕鍠滄槸錛屽け璐ワ紙assert 鏂規硶媯嫻嬪埌鐨勯鏈熺殑閿欒錛変笌閿欒錛堝紓甯告寚鍑虹殑闈為鏈熺殑閿欒錛変箣闂翠笉鍐嶆湁浠諱綍宸埆銆傚敖綆?JUnit 3 嫻嬭瘯榪愯紼嬪簭浠嶇劧鍙互鍖哄埆榪欎簺鎯呭喌錛岃?JUnit 4 榪愯紼嬪簭灝嗕笉鍐嶈兘澶熷尯鍒嗐?</p> <p>鏈鍚庯紝JUnit 4 娌℃湁 <code>suite()</code> 鏂規硶錛岃繖浜涙柟娉曠敤浜庝粠澶氫釜嫻嬭瘯綾繪瀯寤轟竴涓祴璇曞浠躲傜浉鍙嶏紝鍙彉闀垮弬鏁板垪琛ㄧ敤浜庡厑璁稿皢涓嶇‘瀹氭暟閲忕殑嫻嬭瘯浼犻掔粰嫻嬭瘯榪愯紼嬪簭銆?</p> <p>鎴戝娑堥櫎浜?GUI 嫻嬭瘯榪愯紼嬪簭騫朵笉鎰熷埌澶珮鍏達紝浣嗘槸鍏朵粬鏇存敼浼間箮鏈夊彲鑳藉鍔?JUnit 鐨勭畝鍗曟с傚彧瑕佽冭檻鏈夊灝戞枃妗e拰 FAQ 褰撳墠涓撻棬鐢ㄤ簬瑙i噴榪欏嚑鐐癸紝鐒跺悗鑰冭檻瀵逛簬 JUnit 4錛屾偍涓嶅啀闇瑕佽В閲婅繖鍑犵偣浜嗐?</p> <br /> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td><img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" /><br /> <img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" /></td> </tr> </tbody> </table> <table class="no-print" cellspacing="0" cellpadding="0" align="right"> <tbody> <tr align="right"> <td><img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" /><br /> <table cellspacing="0" cellpadding="0" border="0"> <tbody> <tr> <td valign="middle"><img height="16" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width="16" border="0" /><br /> </td> <td valign="top" align="right"><a class="fbox" ><strong>鍥為〉棣?/strong></a></td> </tr> </tbody> </table> </td> </tr> </tbody> </table> <br /> <br /> <p><a name="N10203"><span id="drlxjxf" class="atitle">緙栬瘧鍜岃繍琛?JUnit 4</span></a></p> <p>褰撳墠錛岃繕娌℃湁 JUnit 4 鐨勫簱鐗堟湰銆傚鏋滄偍鎯寵浣撻獙鏂扮殑鐗堟湰錛岄偅涔堟偍闇瑕佷粠 SourceForge 涓婄殑 CVS 鐭ヨ瘑搴撹幏鍙栧畠銆傚垎鏀紙branch錛夋槸“Version4”錛堝弬瑙?<a >鍙傝冭祫鏂?/a>錛夈傛敞鎰忥紝寰堝鐨勬枃妗f病鏈夊崌綰э紝浠嶇劧鏄寚浠ユ棫寮忕殑 3.x 鏂瑰紡鍋氫簨銆侸ava 5 瀵逛簬緙栬瘧 JUnit 4 鏄繀闇鐨勶紝鍥犱負 JUnit 4 澶ч噺鐢ㄥ埌娉ㄩ噴銆佹硾鍨嬩互鍙?Java 5 璇█綰х殑鍏朵粬鐗規с?</p> <p>鑷?JUnit 3 浠ユ潵錛屼粠鍛戒護琛岃繍琛屾祴璇曠殑璇硶鍙戠敓浜嗕竴鐐瑰彉鍖栥傛偍鐜板湪浣跨敤 <code>org.junit.runner.JUnitCore</code> 綾伙細</p> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td class="code-outline"> <pre class="displaycode">$ java -classpath .:junit.jar org.junit.runner.JUnitCore TestA TestB TestC... JUnit version 4.0rc1 Time: 0.003 OK (0 tests)</pre> </td> </tr> </tbody> </table> <br /> <p><a name="N1021B"><span id="jrlvphv" class="smalltitle">鍏煎鎬?/span></a></p> <p>Beck 鍜?Gamma 鍔姏緇存寔鍚戝墠鍜屽悜鍚庡吋瀹廣侸Unit 4 嫻嬭瘯榪愯紼嬪簭鍙互榪愯 JUnit 3 嫻嬭瘯錛屼笉鐢ㄥ仛浠諱綍鏇存敼銆傚彧瑕佸皢鎮ㄦ兂瑕佽繍琛岀殑姣忎釜嫻嬭瘯鐨勫叏闄愬畾綾誨悕浼犻掔粰嫻嬭瘯榪愯紼嬪簭錛屽氨鍍忛拡瀵?JUnit 4 嫻嬭瘯涓鏍楓傝繍琛岀▼搴忚凍澶熸櫤鑳斤紝鍙互鍒嗚鯨鍑哄摢涓祴璇曠被渚濊禆浜庡摢涓増鏈殑 JUnit錛屽茍閫傚綋鍦拌皟鐢ㄥ畠銆?</p> <p>鍚戝悗鍏煎瑕佸洶闅句竴浜涳紝浣嗘槸涔熷彲浠ュ湪 JUnit 3 嫻嬭瘯榪愯紼嬪簭涓繍琛?JUnit 4 嫻嬭瘯銆傝繖涓鐐瑰緢閲嶈錛屾墍浠ヨ濡?Eclipse 涔嬬被鍏鋒湁闆嗘垚 JUnit 鏀寔鐨勫伐鍏峰彲浠ュ鐞?JUnit 4錛岃屼笉闇瑕佹洿鏂般備負浜嗕嬌 JUnit 4 嫻嬭瘯鍙互榪愯鍦?JUnit 3 鐜涓紝鍙互灝嗗畠浠寘瑁呭湪 <code>JUnit4TestAdapter</code> 涓傚皢涓嬮潰鐨勬柟娉曟坊鍔犲埌鎮ㄧ殑 JUnit 4 嫻嬭瘯綾諱腑搴旇灝辮凍澶熶簡錛?</p> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td class="code-outline"> <pre class="displaycode">public static junit.framework.Test suite() { return new JUnit4TestAdapter(AssertionTest.class); }</pre> </td> </tr> </tbody> </table> <br /> <p>浣嗘槸鐢變簬 Java 姣旇緝澶氬彉錛屾墍浠?JUnit 4 涓鐐歸兘涓嶅悜鍚庡吋瀹廣侸Unit 4 瀹屽叏渚濊禆浜?Java 5 鐗規с傚浜?Java 1.4 鎴栨洿鏃╃増鏈紝瀹冨皢涓嶄細緙栬瘧鎴栬繍琛屻?/p> <br /> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td><img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" /><br /> <img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" /></td> </tr> </tbody> </table> <table class="no-print" cellspacing="0" cellpadding="0" align="right"> <tbody> <tr align="right"> <td><img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" /><br /> <table cellspacing="0" cellpadding="0" border="0"> <tbody> <tr> <td valign="middle"><img height="16" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width="16" border="0" /><br /> </td> <td valign="top" align="right"><a class="fbox" ><strong>鍥為〉棣?/strong></a></td> </tr> </tbody> </table> </td> </tr> </tbody> </table> <br /> <br /> <p><a name="N10232"><span id="tjlvhnb" class="atitle">鍓嶆櫙</span></a></p> <p>JUnit 4 榪滄病鏈夌粨鏉熴傚緢澶氶噸瑕佺殑鏂歸潰娌℃湁鎻愬強錛屽寘鎷ぇ閮ㄥ垎鐨勬枃妗c傛垜涓嶆帹鑽愮幇鍦ㄥ氨灝嗘偍鐨勬祴璇曞浠惰漿鎹㈡垚娉ㄩ噴鍜?JUnit 4銆傚嵆浣垮姝わ紝寮鍙戜粛鍦ㄥ揩閫熻繘琛岋紝騫朵笖 JUnit 4 鍓嶆櫙闈炲父鐪嬪ソ銆傚敖綆?Java 2 紼嬪簭鍛樺湪鍙瑙佺殑鏈潵浠嶇劧闇瑕佷嬌鐢?JUnit 3.8錛屼絾鏄偅浜涘凡緇忚漿縐誨埌 Java 5 鐨勭▼搴忓憳鍒欏簲璇ュ緢蹇冭檻浣夸粬浠殑嫻嬭瘯濂椾歡閫傚悎浜庤繖涓柊鐨勬鏋訛紝浠ヤ究鍖歸厤銆?/p> <img src ="http://m.tkk7.com/run2u/aggbug/156712.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/run2u/" target="_blank">絀烘澂</a> 2007-10-29 16:09 <a href="http://m.tkk7.com/run2u/archive/2007/10/29/156712.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Open Session in Test 鍙婅嚜鍔≧ollbackhttp://m.tkk7.com/run2u/archive/2007/10/29/156704.html絀烘澂絀烘澂Mon, 29 Oct 2007 08:00:00 GMThttp://m.tkk7.com/run2u/archive/2007/10/29/156704.htmlhttp://m.tkk7.com/run2u/comments/156704.htmlhttp://m.tkk7.com/run2u/archive/2007/10/29/156704.html#Feedback0http://m.tkk7.com/run2u/comments/commentRss/156704.htmlhttp://m.tkk7.com/run2u/services/trackbacks/156704.htmlfrom: http://m.tkk7.com/rain1102/articles/117541.html

鍙堟槸鏉ヨ嚜Spring榪欎釜紲炲鍥藉害鐨勪笢瑗匡紝 浣犲彲浠ヨtestCase緇ф壙浜嶢bstractTransactionalDataSourceSpringContextTests錛屽氨鍙互鍋氬埌Open Session in Test 錛岃В鍐矵ibernate鐨刲azy-load闂錛涜屼笖鎺ョ鍘熸潵鐨凞AO閲岀殑浜嬪姟鎺у埗瀹氫箟錛岄氳繃setDefaultRollback(boolean)鏂規硶鎺у埗鏈鍚庡洖婊氳繕鏄彁浜わ紝濡傛灉榛樿涓哄洖婊氾紝鍒欐祴璇曚駭鐢熸暟鎹彉鍔ㄤ笉浼氬獎鍝嶆暟鎹簱鍐呮暟鎹?br />  
濡傛灉涓嶈兘緇ф壙浜庤繖涓熀綾伙紝鍙互鑷繁綆鍗曠紪鍐欙紝浠g爜鏄繖鏍風殑錛?br />    protected PlatformTransactionManager transactionManager;
   protected TransactionStatus transactionStatus;
   protected boolean defaultRollback = true;
   public void setUp()
   {
        transactionManager = (PlatformTransactionManager) ctx.getBean("transactionManager");
        transactionStatus = transactionManager.getTransaction(new DefaultTransactionDefinition());
   }
   public void tearDown()
   {
        if (defaultRollback)
            transactionManager.rollback(this.transactionStatus);
        else
           transactionManager.commit(this.transactionStatus);
    }
(娉紝hibernate澶ジ璇堜簡錛屽鏋滃叏閮ㄩ粯璁ゅ洖婊氾紝鍙細鍦╯ession閲屽共媧伙紝涓鐐逛笉鍐欐暟鎹簱錛岃揪涓嶅埌瀹屽叏鐨勬祴璇曟晥鏋溿?

絀烘澂 2007-10-29 16:00 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 免费人成视频在线观看免费| 日韩版码免费福利视频| 国产成人啪精品视频免费网| 国产一区在线观看免费| 亚洲乱码无码永久不卡在线| 一个人晚上在线观看的免费视频| 免费a级毛片无码av| 一级特黄色毛片免费看| 国产性爱在线观看亚洲黄色一级片 | 精品国产免费观看一区| 亚洲一区二区三区丝袜| 日韩a级毛片免费观看| 妇女自拍偷自拍亚洲精品| 久久国产精品成人免费| 久久亚洲日韩看片无码| 国产麻豆视频免费观看| 国产亚洲精品免费| 国产大片免费网站不卡美女| 亚洲AV无码国产精品色| 在线日韩av永久免费观看| 香蕉国产在线观看免费| 日韩特黄特色大片免费视频| 青青视频免费在线| 亚洲色大成网站www永久一区| 亚洲av无码偷拍在线观看| 免费少妇a级毛片人成网| 久久精品无码免费不卡| 久久综合亚洲鲁鲁五月天| 在线免费观看一级毛片| 特级做a爰片毛片免费看| 亚洲人成网www| 成全在线观看免费观看大全| 亚洲理论在线观看| 又粗又大又猛又爽免费视频| 怡红院免费全部视频在线视频 | 免费jjzz在线播放国产| 免费在线看黄网站| 免费v片在线观看| 特级精品毛片免费观看| 亚洲乱码日产精品一二三| 亚洲日韩v无码中文字幕|