锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲精品A在线观看,亚洲国产成人精品无码久久久久久综合,亚洲午夜成人精品无码色欲http://www.tkk7.com/supercrsky/category/27522.html涓撴敞浜嶫avaWeb寮鍙?/description>zh-cnMon, 05 Nov 2012 23:01:45 GMTMon, 05 Nov 2012 23:01:45 GMT60Cactus瀹瑰櫒嫻嬭瘯鍏ラ棬http://www.tkk7.com/supercrsky/articles/205106.html銆呬笂鍠勮嫢姘淬?/dc:creator>銆呬笂鍠勮嫢姘淬?/author>Sat, 31 May 2008 17:11:00 GMThttp://www.tkk7.com/supercrsky/articles/205106.htmlhttp://www.tkk7.com/supercrsky/comments/205106.htmlhttp://www.tkk7.com/supercrsky/articles/205106.html#Feedback0http://www.tkk7.com/supercrsky/comments/commentRss/205106.htmlhttp://www.tkk7.com/supercrsky/services/trackbacks/205106.htmlhttp://jakarta.apache.org/cactus/integration/howto_tomcat.html

鎴戜滑鍦╳eb.xml涓殑webapp涔嬮棿鍔犲叆:
<servlet>
  
<servlet-name>ServletRedirector</servlet-name>
  
<servlet-class>org.apache.cactus.server.ServletTestRedirector</servlet-class>
  
<init-param>
    
<param-name>param1</param-name>
    
<param-value>value1 used for testing</param-value>
  
</init-param>
</servlet>

<servlet>
  
<servlet-name>ServletTestRunner</servlet-name>
  
<servlet-class>org.apache.cactus.server.runner.ServletTestRunner</servlet-class>
</servlet>
鍔犲叆mapping:
<servlet-mapping>
    
<servlet-name>ServletRedirector</servlet-name>
    
<url-pattern>/ServletRedirector</url-pattern>
</servlet-mapping>

<servlet-mapping>
    
<servlet-name>ServletTestRunner</servlet-name>
    
<url-pattern>/ServletTestRunner</url-pattern>
</servlet-mapping>


鐒跺悗鎴戜滑鍐欎竴涓畝鍗曠殑Servlet鏉ヨ繘琛屾祴璇?
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;

public class SampleServlet extends HttpServlet
{
    
public void saveToSession(HttpServletRequest request)
    
{
        String testparam 
= request.getParameter("testparam");
        request.getSession().setAttribute(
"testAttribute", testparam);
    }

}


瀵逛簬姝ervlet鍦▁ml鐨勯厤緗垜灝變笉鍐欎簡錛庢兂蹇呬綘涔熶簡鐒朵簬蹇冧簡鍚э紟

鏉ョ湅鐪嬫垜浠殑嫻嬭瘯綾?
import junit.framework.Test;
import junit.framework.TestSuite;

import org.apache.cactus.ServletTestCase;
import org.apache.cactus.WebRequest;

public class TestSampleServlet extends ServletTestCase
{
    
public TestSampleServlet(String theName)
    
{
        
super(theName);
    }


    
public static Test suite()
    
{
        
return new TestSuite(TestSampleServlet.class);
    }


    
public void beginSaveToSessionOK(WebRequest webRequest)
    
{
        webRequest.addParameter(
"testparam""it works!");
    }


    
public void testSaveToSessionOK()
    
{
        SampleServlet servlet 
= new SampleServlet();
        servlet.saveToSession(request);
        assertEquals(
"it works!", session.getAttribute("testAttribute"));
    }

}



閮ㄧ講涔嬪悗錛屽惎鍔═omcat,璁塊棶:

http://localhost:8080/test/ServletTestRunner?suite=TestSampleServlet
榪欐椂鍊欎綘浼氱湅鍒拌緭鍑恒錛?br />

<?xml version="1.0" encoding="UTF-8" ?> 
- <testsuites>
- <testsuite name="com.test.servlet.TestServletTest" tests="1" failures="0" errors="1" time="0.516">
- <testcase name="testSaveSessionToOK" time="0.36">
  
<error message="org/apache/commons/codec/DecoderException" type="java.lang.NoClassDefFoundError">java.lang.NoClassDefFoundError: org/apache/commons/codec/DecoderException at org.apache.commons.httpclient.HttpMethodBase.getURI(HttpMethodBase.java:265) at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:383) at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:346) at org.apache.cactus.internal.client.connector.http.HttpClientConnectionHelper.connect_aroundBody0(HttpClientConnectionHelper.java:144) at org.apache.cactus.internal.client.connector.http.HttpClientConnectionHelper.connect_aroundBody1$advice(HttpClientConnectionHelper.java:307) at org.apache.cactus.internal.client.connector.http.HttpClientConnectionHelper.connect(HttpClientConnectionHelper.java:1) at org.apache.cactus.internal.client.connector.http.DefaultHttpClient.callRunTest(DefaultHttpClient.java:163) at org.apache.cactus.internal.client.connector.http.DefaultHttpClient.doTest_aroundBody0(DefaultHttpClient.java:81) at org.apache.cactus.internal.client.connector.http.DefaultHttpClient.doTest_aroundBody1$advice(DefaultHttpClient.java:307) at org.apache.cactus.internal.client.connector.http.DefaultHttpClient.doTest(DefaultHttpClient.java:1) at org.apache.cactus.internal.client.connector.http.HttpProtocolHandler.runWebTest(HttpProtocolHandler.java:164) at org.apache.cactus.internal.client.connector.http.HttpProtocolHandler.runTest_aroundBody0(HttpProtocolHandler.java:83) at org.apache.cactus.internal.client.connector.http.HttpProtocolHandler.runTest_aroundBody1$advice(HttpProtocolHandler.java:307) at org.apache.cactus.internal.client.connector.http.HttpProtocolHandler.runTest(HttpProtocolHandler.java:1) at org.apache.cactus.internal.client.ClientTestCaseCaller.runTest(ClientTestCaseCaller.java:145) at org.apache.cactus.internal.AbstractCactusTestCase.runBareClient(AbstractCactusTestCase.java:218) at org.apache.cactus.internal.AbstractCactusTestCase.runBare(AbstractCactusTestCase.java:134) at org.apache.cactus.server.runner.ServletTestRunner.run(ServletTestRunner.java:309) at org.apache.cactus.server.runner.ServletTestRunner.doGet_aroundBody0(ServletTestRunner.java:187) at org.apache.cactus.server.runner.ServletTestRunner.doGet_aroundBody1$advice(ServletTestRunner.java:225) at org.apache.cactus.server.runner.ServletTestRunner.doGet(ServletTestRunner.java:1) at javax.servlet.http.HttpServlet.service(HttpServlet.java:690) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Unknown Source)</error> 
  
</testcase>
  
</testsuite>
  
</testsuites>

鐪嬫潵紼嬪簭娌℃湁澶ч棶棰橈紝宸茬粡姝g‘鎵ц錛庝笉榪囪繖鏃舵彁紺烘湁涓涓被鎵句笉鍒幫紟
瀵逛簬榪欎釜闂鎴戜滑鍙互鍘?font style="background-color: #f4f4f4">http://commons.apache.org/downloads/download_codec.cgi涓嬭澆錛?br />
榪欎釜xml鐪嬭搗鏉ュ灝戜笉涔犳儻錛庢垜浠彲浠ヤ笅杞絰sl鎶婂畠杞崲鎴恏tml鏍煎紡錛?br /> 鐐規涓嬭澆 鎶婂畠鏀懼埌浣爓eb搴旂敤鐨勬牴鐩綍涓嬶紟

榪欎釜鏃跺欎綘鍙互璁塊棶濡備笅鍦板潃錛?br /> http://localhost:8080/test/ServletTestRunner?suite=TestSampleServlet&xsl=cactus-report.xsl

榪欐椂鍊欎綘灝變細鐪嬪埌鍙嬪ソ鐨凥tml鏍煎紡浜?
HTML output of ServletTestRunner


]]>
selenium鍒濇帰http://www.tkk7.com/supercrsky/articles/162866.html銆呬笂鍠勮嫢姘淬?/dc:creator>銆呬笂鍠勮嫢姘淬?/author>Sat, 24 Nov 2007 08:13:00 GMThttp://www.tkk7.com/supercrsky/articles/162866.htmlhttp://www.tkk7.com/supercrsky/comments/162866.htmlhttp://www.tkk7.com/supercrsky/articles/162866.html#Feedback0http://www.tkk7.com/supercrsky/comments/commentRss/162866.htmlhttp://www.tkk7.com/supercrsky/services/trackbacks/162866.html鍏堢‘淇濅綘鐨?444绔彛娌¤鍗犵敤,鍙互鐢╪etstat -an鍛戒護鏌ョ湅涓涓?
鐒跺悗紜繚浣犵殑jdk鐗堟湰鍦?.5浠ヤ笂.

絎竴姝?
鎵懼埌浣犱笅杞界殑selenium瑙e帇鐩綍涓嬬殑selenium-server-0.9.2鐩綍.
鍦ㄨ繖涓洰褰曚笅鍐欎釜鎵瑰鐞?鍐呭涓?
java -jar selenium-server.jar
淇濆瓨涓簊tart.bat,鍚嶅瓧闅忎究鍟?鍙屽嚮鍚姩.榪欎釜鏄湇鍔?鍦ㄤ竴鍒囧伐浣滃紑濮嬩箣鍓?
蹇呴』鍏堝惎鍔ㄨ繖涓?鍚姩鍚庣殑dos紿楀彛涓嶈鍏抽棴.

絎簩姝?
鍦∕yEclipse寤轟釜web宸ョ▼,鎶妔elenium-java-client-driver-0.9.2鐩綍涓嬬殑jar鍖呭姞鍏?br /> 鍒皐eb宸ョ▼鐨刲ib鐩綍涓?鍔犲叆junit4鏀寔.

絎笁姝?
鍐欎釜嫻嬭瘯index.jsp欏?

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<html>
  
<head>
    
<title>test!</title>
  
</head>
  
  
<body>
  
<form action="success.jsp" method="post">
    UserName:
<input type="text" name="username" /><br />
    
<select name="select">
        
<option value="game">娓告垙</option>
        
<option value="program">緙栫▼</option>
    
</select> <br/>
    
<input type="submit" name="sub" value="submit"/> <br />
    
</form>
  
</body>
</html>
榪樻湁涓涓猻uccess.jsp:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  
<head>
    
<title>success</title>
  
</head>
  
<body>
    ok!
  
</body>
</html>

鍐欎釜嫻嬭瘯綾?
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.server.SeleniumServer;
import static org.junit.Assert.*;
import com.thoughtworks.selenium.DefaultSelenium;
import com.thoughtworks.selenium.Selenium;


public class TestPage
{
    
private Selenium selenium;
    @Before
    
public void setUp()
    
{
        
//姝rl蹇呴』鏄疭elenium鏈嶅姟鍣ㄥ湴鍧
        String url = "http://localhost:4444";
        selenium 
= new DefaultSelenium("localhost",SeleniumServer.getDefaultPort(),"*iexplore",url);
        selenium.start();
    }

    
    @After
    
public void tearDown()
    
{
        
try
        
{
            selenium.stop();
        }
 catch (RuntimeException e)
        
{
            System.out.println(e.getMessage());
        }

    }

    
//嫻嬭瘯鏍囬,鏂囨湰妗嗚緭鍏?鍙婃寜閽偣鍑?/span>
    @Test
    
public void test1()
    
{
        
//鎴戣繖閲屾槸tomcat鐨勫湴鍧,鎴戠殑tomcat绔彛鏄?888,selenium鏄綋鍓嶅伐紼?鎴戣瀹冩墦寮棣栭〉
        selenium.open("http://localhost:8888/selenium/index.jsp");
        String title 
= selenium.getTitle();
        
//鍘熸潵緗戦〉鐨勬爣棰?/span>
        System.out.println(title);
        selenium.type(
"xpath=//input[@name='username']""zdw");
        
//寰楀埌杈撳叆鐨勬枃鏈鐨勫?/span>
        System.out.println("textvalue:" + selenium.getValue("xpath=//input[@name='username']"));
        selenium.click(
"xpath=//input[@name='sub']");
        selenium.waitForPageToLoad(
"4000");
        assertEquals(title, 
"test!");
        
//杈撳嚭鏂伴〉鐨勬爣棰?/span>
        System.out.println(selenium.getTitle());
    }

    
//嫻嬭瘯閫夋嫨妗?/span>
    @Test
    
public void testSelect()
    
{
        selenium.open(
"http://localhost:8888/selenium/index.jsp");
        selenium.select(
"xpath=//select[@name='select']""index=1");
        
//寰楀埌閫夋嫨鐨刬d
        System.out.println("selectid:" + selenium.getSelectedIndex("xpath=//select[@name='select']"));
        
//寰楀埌閫夋嫨鐨勫?/span>
        System.out.println("selectvalue:" + selenium.getSelectedValue("xpath=//select[@name='select']"));
        selenium.click(
"xpath=//input[@type='submit']");
        selenium.waitForPageToLoad(
"3000");
    }

    
    
}










娉ㄩ噴宸茬粡寰堣緇嗕簡,鎰熻selenium寰堝ソ鐢?瀹屽叏鍙互妯℃嫙嫻忚鍣ㄦ搷浣?鎴戣繖閲岀敤鐨勬槸ie,浣犲綋鐒跺彲浠ョ敤firefox鎴栧叾瀹?
婧愮爜鍙湪鎴戠殑緗戠洏涓嬭澆.


]]>
Selenium 浣跨敤浠嬬粛 http://www.tkk7.com/supercrsky/articles/162787.html銆呬笂鍠勮嫢姘淬?/dc:creator>銆呬笂鍠勮嫢姘淬?/author>Sat, 24 Nov 2007 02:03:00 GMThttp://www.tkk7.com/supercrsky/articles/162787.htmlhttp://www.tkk7.com/supercrsky/comments/162787.htmlhttp://www.tkk7.com/supercrsky/articles/162787.html#Feedback0http://www.tkk7.com/supercrsky/comments/commentRss/162787.htmlhttp://www.tkk7.com/supercrsky/services/trackbacks/162787.htmlSelenium 鏄?thoughtworks鍏徃鐨勪竴涓泦鎴愭祴璇曠殑寮哄ぇ宸ュ叿銆傛渶榪戝弬涓庝簡涓涓郴緇熺Щ妞嶇殑欏圭洰錛屾濂界敤鍒拌繖涓伐鍏鳳紝

鎶婁竴浜涗嬌鐢ㄥ績寰楀垎浜粰澶у錛屽笇鏈涘ぇ瀹惰兘澶氬浣跨敤榪欐牱鐨勫己澶х殑錛屽厤璐圭殑宸ュ叿錛屾潵淇濊瘉鎴戜滑鐨勮川閲忋?/span>

Selenium 鐨勬枃妗g幇瀛樼殑涓嶅皯錛屼笉榪囬兘澶畝鍗曚簡銆備嬌鐢⊿elenium鐨勬椂鍊欙紝鎴戞洿澶氱殑鏄洿鎺ュ幓鐪婣PI鏂囨。錛屽ソ鍦ˋPI涓嶉敊錛?/span>

涓涓竴涓湅錛屽氨鑳芥壘鍒版墍闇瑕佺殑 :-)   瀹樻柟緗戠珯錛?/span>http://www.openqa.org/selenium/

濂斤紝涓嬮潰榪涘叆姝i錛?/span>

涓銆丼elenium 鐨勭増鏈?/span>

Selenium 鐜板湪瀛樺湪2涓増鏈紝涓涓彨 selenium-core, 涓涓彨selenium-rc 銆?/span>

selenium-core 鏄嬌鐢℉TML鐨勬柟寮忔潵緙栧啓嫻嬭瘯鑴氭湰錛屼綘涔熷彲浠ヤ嬌鐢?Selenium-IDE鏉ュ綍鍒惰剼鏈紝浣嗘槸鐩墠Selenium-IDE
鍙湁 FireFox 鐗堟湰銆?/span>

Selenium-RC 鏄?selenium-remote control 緙╁啓錛屾槸浣跨敤鍏蜂綋鐨勮璦鏉ョ紪鍐欐祴璇曠被銆?/span>

selenium-rc 鏀寔鐨勮璦闈炲父澶氾紝榪欓噷鎴戜滑鐫閲嶅叧娉╦ava鐨勬柟寮忋傝繖閲岃鐨勪篃涓昏鏄?selenium-rc錛屽洜涓轟釜浜鴻繕鏄枩嬈㈣繖縐?br /> 鏂瑰紡 :-)

 浜屻佷竴浜涘噯澶囧伐浣?/span>

1銆佸綋鐒舵槸涓嬭澆 selenium 浜嗭紝鍒?http://www.openqa.org/selenium/ 涓嬭澆灝卞彲浠ヤ簡錛岃寰楅夋嫨selenium-rc 鐨勭増鏈?/span>

2銆佸涔犱竴涓?xpath 鐨勭煡璇嗐傛湁涓暀紼嬶細http://www.zvon.org/xxl/XPathTutorial/General_chi/examples.html
     涓瀹氳瀛︿範榪欎釜錛屼笉鐒朵綘鏍規湰鐪嬩笉鎳備笅闈㈢殑鍐呭錛?/span>

3銆佸畨瑁?jdk1.5

 涓夈乻elenium-rc 涓浜涗嬌鐢ㄦ柟娉?/span>

鍦?selenium-remote-control-0.9.0\server 鐩綍閲岋紝鎴戜滑榪愯 java -jar selenium-server.jar
涔嬪悗浣犲氨浼氱湅鍒頒竴浜涘惎鍔ㄤ俊鎭傝浣跨敤 selenium-rc 錛屽惎鍔ㄨ繖涓猻erver 鏄繀欏葷殑銆?/span>

褰撶劧錛屽惎鍔ㄧ殑鏃跺欐湁璁稿鍙傛暟錛岃繖浜涚敤娉曞彲浠ュ湪緗戠珯閲岀湅鐪嬫暀紼嬶紝涓嶈繃涓嶅姞鍙傛暟涔熷凡緇忚凍澶熶簡銆?/span>

selenium server 鍚姩瀹屾瘯浜嗭紝閭d箞鎴戜滑灝卞彲浠ュ紑濮嬬紪鍐欐祴璇曠被浜嗭紒

鎴戜滑鍏堟湁涓蹇碉紝selenium 鏄ā浠挎祻瑙堝櫒鐨勮涓虹殑錛屽綋浣犺繍琛屾祴璇曠被鐨勬椂鍊欙紝浣犲氨浼氬彂鐜皊elenium 浼氭墦寮涓涓?/span>

嫻忚鍣紝鐒跺悗嫻忚鍣ㄦ墽琛屼綘鐨勬搷浣溿?/span>

 濂藉惂錛岄鍏堢敓鎴愭垜浠殑嫻嬭瘯綾伙細

java 浠g爜

 

public class TestPage2 extends TestCase {    
  
private Selenium selenium;    
   
  
protected void setUp() throws Exception {    
     String url 
= “http://xxx.xxx.xxx.xxx/yyy”;    
     selenium = new DefaultSelenium("localhost", SeleniumServer.getDefaultPort    
                                (), 
"*iexplore", url);    
     selenium.start();    
                
     
super.setUp();                         
            
  }
    
   
  
protected void tearDown() throws Exception {    
            
      selenium.stop();    
      
super.tearDown();    
                
   
  }
    
   
}
   

 

浠g爜鍗佸垎綆鍗曪紝浣滅敤灝辨槸鍒濆鍖栦竴涓?Selenium 瀵硅薄銆傚叾涓細
url : 灝辨槸浣犺嫻嬭瘯鐨勭綉绔?br /> localhost:  鍙互涓嶆槸localhost錛屼絾鏄繀欏繪槸 selenium server 鍚姩鐨勫湴鍧
*iexplore :  鍙互鏄叾瀹冩祻瑙堝櫒綾誨瀷錛屽彲浠ュ湪緗戠珯涓婄湅閮芥敮鎸佸摢浜涖?/span>

涓嬮潰鎴戝氨瑕佽璁叉庝箞浣跨敤selenium 榪欎釜瀵硅薄鏉ヨ繘琛屾祴璇曘?/span>

1銆佹祴璇曟枃鏈緭鍏ユ

鍋囪欏甸潰涓婃湁涓涓枃鏈緭鍏ユ錛屾垜浠嫻嬭瘯鐨勫唴瀹規槸 鍦ㄥ叾涓緭鍏ヤ竴浜涘唴瀹癸紝鐒跺悗鐐瑰嚮涓涓寜閽紝鐪嬬湅欏甸潰鐨勬槸鍚﹁煩杞?br /> 鍒伴渶瑕佺殑欏甸潰銆?br />

public void test1() {    
            
    selenium.open(
"http://xxx.xxx.xxx/yyy");    
            
    selenium.type(
"xpath=//input[@name='userID']""test-user");    
    selenium.click(
"xpath=//input[@type='button']");    
    selenium.waitForPageToLoad(
"2000");    
    assertEquals(selenium.getTitle(), 
"Welcome");    
}
   


涓婇潰鐨勪唬鐮佹槸榪欎釜鎰忔濓細
1銆佽皟鐢?selenium.open 鏂規硶錛屾祻瑙堝櫒浼氭墦寮鐩稿簲鐨勯〉闈?br /> 2銆佷嬌鐢?type 鏂規硶鏉ョ粰杈撳叆妗嗚緭鍏ユ枃瀛?br /> 3銆佺瓑寰呴〉闈㈣澆鍏?br /> 4銆佺湅鐪嬫柊鐨勯〉闈㈡爣棰樻槸涓嶆槸鎴戜滑鎯寵鐨勩?/span>

2銆佹祴璇曚笅鎷夋

java 浠g爜
public void test1() {        
                
    selenium.open(
"http://xxx.xxx.xxx/yyy");        
                
    selenium.select(
"xpath=//SELECT[@name='SBBUSYO']""index=1");    
    selenium.click(
"xpath=//input[@type='button']");        
    selenium.waitForPageToLoad(
"2000");        
    assertEquals(selenium.getTitle(), 
"Welcome");        
}
      

鍙互鐪嬪埌錛屾垜浠彲浠ヤ嬌鐢?select 鏂規硶鏉ョ‘瀹氶夋嫨涓嬫媺妗嗕腑鐨勫摢涓夐」銆?br /> select 鏂規硶榪樻湁寰堝鐢ㄦ硶錛屽叿浣撳幓鐪嬬湅鏂囨。鍚с?/span>

3銆佹祴璇昪heck box

java 浠g爜

public void test1() {            
                    
    selenium.open(
"http://xxx.xxx.xxx/yyy");            
                    
    selenium.check(
"xpath=//input[@name='MEICK_000']");      
    selenium.click(
"xpath=//input[@type='button']");            
    selenium.waitForPageToLoad(
"2000");            
    assertEquals(selenium.getTitle(), 
"Welcome");            
}
       


鎴戜滑鍙互浣跨敤 check 鏂規硶鏉ョ‘瀹氶夋嫨鍝釜radio button

4銆佸緱鍒版枃鏈閲岀殑鏂囧瓧

java 浠g爜

    

assertEquals(selenium.getValue("xpath=//input[@name='WNO']"), "1");   

 

getValue 鏂規硶灝辨槸寰楀埌鏂囨湰妗嗛噷鐨勬暟鍊鹼紝鍙笉鏄?getText 鏂規硶錛岀敤閿欎簡鍙氨閮侀椃浜嗐?/span>

5銆佸垽鏂〉闈㈡槸鍚﹀瓨鍦ㄤ竴涓厓绱?/span>

java 浠g爜

    

assertTrue(selenium.isElementPresent("xpath=//input[@name='MEICK_000']"));  

 

涓鑸繖涓槸鐢ㄦ潵嫻嬭瘯褰撳垹闄や竴浜涙暟鎹悗錛岄〉闈笂鏈変簺涓滆タ灝變笉浼氭樉紺虹殑鎯呭喌銆?/span>

6銆佸垽鏂笅鎷夋閲岄夋嫨浜嗗摢涓夐」

java 浠g爜

    

assertEquals(selenium.getSelectedIndex("xpath=//SELECT[@name='HATIMING']"), "1");   

 

榪欎釜鍙互鐢ㄦ潵鍒ゆ柇涓嬫媺妗嗘樉紺虹殑閫夐」鏄惁鏄湡鏈涚殑閫夐」銆?/span>

7銆佸鏋滄湁 alert 寮瑰嚭瀵硅瘽妗嗘庝箞鍔烇紵

榪欎釜闂寮勪簡鎸洪暱鏃墮棿錛屽彲浠ヨ繖鏍鋒潵鍏抽棴寮瑰嚭鐨勫璺ㄦ錛?/span>

java 浠g爜
if(selenium.isAlertPresent()) {    
   
   selenium.getAlert();    
   
}
   

鍏跺疄褰撹皟鐢?selenium.getAlert() 鏃訛紝灝變細鍏抽棴 alert 寮瑰嚭鐨勫璇濇銆?br /> 涔熷彲浠ヤ嬌鐢?System.out.println(selenium.getAlert()) 鏉ユ煡鐪嬪璺ㄦ鏄劇ず鐨勪俊鎭?/span>

鍦ㄦ祴璇曠殑鏃跺欙紝鏈夌殑浜轟細鏄劇ず璁稿alert 鏉ユ煡鐪嬭繍琛屾椂鐨勬暟鎹紝閭d箞鎴戜滑鍙互鐢ㄤ笅闈㈢殑鏂瑰紡鏉ュ叧闂偅浜?alert:

java 浠g爜
while(selenium.isAlertPresent()) {        
       
   selenium.getAlert();        
       
}
    

8銆佸浣曟祴璇曚竴浜涢敊璇秷鎭殑鏄劇ず錛?/span>

java 浠g爜
assertTrue(selenium.getBodyText().indexOf("閿欒娑堟伅")>=0);   

鍒囪錛?getBodyText 榪斿洖鐨勬椂嫻忚鍣ㄩ〉闈笂鐨勬枃瀛楋紝涓嶅洖鍖呭惈html 浠g爜鐨勶紝濡傛灉瑕佹樉紺篽tml 浠g爜錛岀敤涓嬮潰榪欎釜:

java 浠g爜
System.out.println(selenium.getHtmlSource());   

浠ヤ笂灝辨槸鏈甯哥敤鐨勫嚑涓柟娉曚簡錛屼緥濡?click, type, getValue 絳夌瓑銆?br /> 榪樻湁灝辨槸涓瀹氳瀛︿範 xpath, 鍏跺疄xpath 涔熷彲浠ユ湁“涓庛佹垨銆侀潪”鐨勬搷浣滐細

java 浠g爜

鍥涖佸叾浠?/span>

selenium 榪樻湁鏇村鐨勭敤娉曪紝渚嬪寮瑰嚭欏甸潰絳夌瓑銆傚綋闈㈠娌¤榪囩殑嫻嬭瘯瑕佹眰鏃訛紝鎴戞渶絎ㄧ殑鏂規硶灝辨槸鎸夌収api鏂囨。涓涓竴涓壘錛?br /> 濂藉湪涓嶅錛岃偗瀹氳兘鎵懼埌銆?br />

selenium.check("xpath=//input[(@name='KNYKBN')and(@value='Y')]"); 


]]>
TestSuite闆嗗悎嫻嬭瘯鐨勪嬌鐢?/title><link>http://www.tkk7.com/supercrsky/articles/162777.html</link><dc:creator>銆呬笂鍠勮嫢姘淬?/dc:creator><author>銆呬笂鍠勮嫢姘淬?/author><pubDate>Sat, 24 Nov 2007 00:50:00 GMT</pubDate><guid>http://www.tkk7.com/supercrsky/articles/162777.html</guid><wfw:comment>http://www.tkk7.com/supercrsky/comments/162777.html</wfw:comment><comments>http://www.tkk7.com/supercrsky/articles/162777.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/supercrsky/comments/commentRss/162777.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/supercrsky/services/trackbacks/162777.html</trackback:ping><description><![CDATA[<p>鏈夋椂鍊欓渶瑕佷竴嬈℃祴璇曟墍鏈夌殑綾?鎴栧涓?,榪欐椂鍊欏氨鐢ㄥ埌浜員estSuite.<br /> 涓句緥璇存槑:<br /> 榪欓噷鏈変袱涓猅estCase綾?<br /> Person:<br /> </p> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" /><span style="color: #0000ff">package</span><span style="color: #000000"> com;<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> junit.framework.TestCase;<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> Person </span><span style="color: #0000ff">extends</span><span style="color: #000000"> TestCase<br /> <img id="Codehighlighter1_83_237_Open_Image" onclick="this.style.display='none'; Codehighlighter1_83_237_Open_Text.style.display='none'; Codehighlighter1_83_237_Closed_Image.style.display='inline'; Codehighlighter1_83_237_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_83_237_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_83_237_Closed_Text.style.display='none'; Codehighlighter1_83_237_Open_Image.style.display='inline'; Codehighlighter1_83_237_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" alt="" /></span><span id="Codehighlighter1_83_237_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.tkk7.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_83_237_Open_Text"><span style="color: #000000">{<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /> </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> testMethod1()<br /> <img id="Codehighlighter1_113_156_Open_Image" onclick="this.style.display='none'; Codehighlighter1_113_156_Open_Text.style.display='none'; Codehighlighter1_113_156_Closed_Image.style.display='inline'; Codehighlighter1_113_156_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_113_156_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_113_156_Closed_Text.style.display='none'; Codehighlighter1_113_156_Open_Image.style.display='inline'; Codehighlighter1_113_156_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" alt="" /> </span><span id="Codehighlighter1_113_156_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.tkk7.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_113_156_Open_Text"><span style="color: #000000">{<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />  System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Person:method1</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" /> }</span></span><span style="color: #000000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /> <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /> </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> testMethod2()<br /> <img id="Codehighlighter1_188_231_Open_Image" onclick="this.style.display='none'; Codehighlighter1_188_231_Open_Text.style.display='none'; Codehighlighter1_188_231_Closed_Image.style.display='inline'; Codehighlighter1_188_231_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_188_231_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_188_231_Closed_Text.style.display='none'; Codehighlighter1_188_231_Open_Image.style.display='inline'; Codehighlighter1_188_231_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" alt="" /> </span><span id="Codehighlighter1_188_231_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.tkk7.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_188_231_Open_Text"><span style="color: #000000">{<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />  System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Person:method2</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" /> }</span></span><span style="color: #000000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /> <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /> <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />}</span></span></div> <p><br /> Student:<br /> </p> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" /><span style="color: #0000ff">package</span><span style="color: #000000"> com;<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> junit.framework.TestCase;<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> Student </span><span style="color: #0000ff">extends</span><span style="color: #000000"> TestCase<br /> <img id="Codehighlighter1_84_158_Open_Image" onclick="this.style.display='none'; Codehighlighter1_84_158_Open_Text.style.display='none'; Codehighlighter1_84_158_Closed_Image.style.display='inline'; Codehighlighter1_84_158_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_84_158_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_84_158_Closed_Text.style.display='none'; Codehighlighter1_84_158_Open_Image.style.display='inline'; Codehighlighter1_84_158_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" alt="" /></span><span id="Codehighlighter1_84_158_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.tkk7.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_84_158_Open_Text"><span style="color: #000000">{<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /> </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> testMethod()<br /> <img id="Codehighlighter1_113_156_Open_Image" onclick="this.style.display='none'; Codehighlighter1_113_156_Open_Text.style.display='none'; Codehighlighter1_113_156_Closed_Image.style.display='inline'; Codehighlighter1_113_156_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_113_156_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_113_156_Closed_Text.style.display='none'; Codehighlighter1_113_156_Open_Image.style.display='inline'; Codehighlighter1_113_156_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" alt="" /> </span><span id="Codehighlighter1_113_156_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.tkk7.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_113_156_Open_Text"><span style="color: #000000">{<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />  System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Student:method</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" /> }</span></span><span style="color: #000000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />}</span></span><span style="color: #000000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" /></span></div> <p><br /> 闆嗗悎嫻嬭瘯鐨勭被:PersonSuite<br /> </p> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" /><span style="color: #0000ff">package</span><span style="color: #000000"> com;<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> junit.awtui.TestRunner;<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> junit.framework.Test;<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> junit.framework.TestCase;<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> junit.framework.TestSuite;<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> PersonSuite </span><span style="color: #0000ff">extends</span><span style="color: #000000"> TestCase<br /> <img id="Codehighlighter1_182_443_Open_Image" onclick="this.style.display='none'; Codehighlighter1_182_443_Open_Text.style.display='none'; Codehighlighter1_182_443_Closed_Image.style.display='inline'; Codehighlighter1_182_443_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_182_443_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_182_443_Closed_Text.style.display='none'; Codehighlighter1_182_443_Open_Image.style.display='inline'; Codehighlighter1_182_443_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" alt="" /></span><span id="Codehighlighter1_182_443_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.tkk7.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_182_443_Open_Text"><span style="color: #000000">{<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /> </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">static</span><span style="color: #000000"> Test suite()<br /> <img id="Codehighlighter1_213_330_Open_Image" onclick="this.style.display='none'; Codehighlighter1_213_330_Open_Text.style.display='none'; Codehighlighter1_213_330_Closed_Image.style.display='inline'; Codehighlighter1_213_330_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_213_330_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_213_330_Closed_Text.style.display='none'; Codehighlighter1_213_330_Open_Image.style.display='inline'; Codehighlighter1_213_330_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" alt="" /> </span><span id="Codehighlighter1_213_330_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.tkk7.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_213_330_Open_Text"><span style="color: #000000">{<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />  TestSuite ts </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> TestSuite();<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />  ts.addTestSuite(Person.</span><span style="color: #0000ff">class</span><span style="color: #000000">);<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />  ts.addTestSuite(Student.</span><span style="color: #0000ff">class</span><span style="color: #000000">);<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />  </span><span style="color: #0000ff">return</span><span style="color: #000000"> ts;<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" /> }</span></span><span style="color: #000000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /> <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /> </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">static</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> main(String[] args)<br /> <img id="Codehighlighter1_375_441_Open_Image" onclick="this.style.display='none'; Codehighlighter1_375_441_Open_Text.style.display='none'; Codehighlighter1_375_441_Closed_Image.style.display='inline'; Codehighlighter1_375_441_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_375_441_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_375_441_Closed_Text.style.display='none'; Codehighlighter1_375_441_Open_Image.style.display='inline'; Codehighlighter1_375_441_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" alt="" /> </span><span id="Codehighlighter1_375_441_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.tkk7.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_375_441_Open_Text"><span style="color: #000000">{<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />  </span><span style="color: #008000">//</span><span style="color: #008000">鐢═estRunner鍛煎彨suite 鏂規硶</span><span style="color: #008000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /></span><span style="color: #000000">  TestRunner.run(PersonSuite.</span><span style="color: #0000ff">class</span><span style="color: #000000">);<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" /> }</span></span><span style="color: #000000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />}</span></span><span style="color: #000000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" /></span></div> <img src ="http://www.tkk7.com/supercrsky/aggbug/162777.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/supercrsky/" target="_blank">銆呬笂鍠勮嫢姘淬?/a> 2007-11-24 08:50 <a href="http://www.tkk7.com/supercrsky/articles/162777.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍏ㄩ潰璁よ瘑JUnit4.0http://www.tkk7.com/supercrsky/articles/162775.html銆呬笂鍠勮嫢姘淬?/dc:creator>銆呬笂鍠勮嫢姘淬?/author>Sat, 24 Nov 2007 00:43:00 GMThttp://www.tkk7.com/supercrsky/articles/162775.htmlhttp://www.tkk7.com/supercrsky/comments/162775.htmlhttp://www.tkk7.com/supercrsky/articles/162775.html#Feedback0http://www.tkk7.com/supercrsky/comments/commentRss/162775.htmlhttp://www.tkk7.com/supercrsky/services/trackbacks/162775.html鎻愯 鏈枃灝嗗悜浣犱粙緇嶅浣曞疄鐜頒粠JUnit 3.8鍚慗Unit 4鐨勮縼縐匯傚悓鏃訛紝榪樿璁篔Unit 4涓殑涓浜涙柊鐗瑰緛錛岀壒鍒寘鎷娉ㄨВ鐨勪嬌鐢紱鏈鍚庯紝綆瑕佷粙緇嶈繖涓柊鐗堟湰鐨処DE闆嗘垚鐜扮姸銆?/font>

銆銆涓銆?寮曡█

銆銆鍦ㄦ湰鏂囧紑濮嬶紝鎴戝皢鍋囧畾錛屼綘宸茬粡浜嗚В鐢盞ent Beck鍜孍rich Gamma鍙戞槑鐨勮繖涓狫ava鍗曞厓嫻嬭瘯妗嗘灦騫跺洜姝よ岀暐榪囧繀瑕佺殑綆浠嬨傛墍浠ワ紝鎴戝皢闆嗕腑鍒嗘瀽浠嶫Unit 3.8鍒版渶鏂扮増鏈?JUnit 4鐨勮縼縐昏繃紼嬩互鍙婂叾鍦↖DE鍜孉nt涓殑闆嗘垚銆?br />
銆銆JUnit 4鏄竴縐嶄笌鍏朵箣鍓嶇殑鐗堟湰瀹屽叏涓嶅悓鐨凙PI錛屽畠鏍規嵁Java 5.0涓殑鏂扮壒寰?娉ㄨВ錛岄潤鎬佸鍏ョ瓑)鏋勫緩鑰屾垚銆傚浣犳墍瑙侊紝JUnit 4鏇寸畝鍗曘佹洿涓板瘜鍜屾洿鏄撲簬浣跨敤錛岃屼笖瀹冨紩鍏ヤ簡鏇翠負鐏墊椿鐨勫垵濮嬪寲鍜屾竻鐞嗗伐浣滐紝榪樻湁闄愭椂鐨勫拰鍙傛暟鍖栨祴璇曠敤渚嬨?

銆銆浠g爜瀹炰緥鏈鑳借鏄庨棶棰樸傚洜姝わ紝鍦ㄦ湰鏂囦腑錛屾垜灝嗕嬌鐢ㄤ竴涓緥瀛愭潵灞曠ず涓嶅悓鐨勬祴璇曠敤渚嬶細涓涓綆楀櫒銆傝紺轟緥璁$畻鍣ㄥ緢綆鍗曪紝鏁堢巼騫朵笉楂橈紝鐢氳嚦榪樻湁涓浜涢敊璇紱瀹冧粎浠呮搷浣滄暣鏁幫紝騫朵笖鎶婄粨鏋滃瓨鍌ㄥ湪涓涓潤鎬佸彉閲忎腑銆係ubstract鏂規硶騫朵笉榪斿洖涓涓湁鏁堢殑緇撴灉錛岃屼笖涔熸病鏈夊疄鐜頒箻娉曡繍綆楋紝鑰屼笖鐪嬩笂鍘誨湪squareRoot鏂規硶涓繕瀛樺湪涓涓敊璇細鏃犻檺寰幆銆傝繖浜涢敊璇皢甯姪璇存槑浣跨敤JUnit 4榪涜嫻嬭瘯鐨勬湁鏁堟с備綘鍙互鎵撳紑鍜屽叧闂繖涓綆楀櫒錛岃屼笖浣犲彲浠ユ竻闄よ繖浜涚粨鏋溿備笅闈㈡槸鍏跺疄鐜頒唬鐮侊細

package calc;
public class Calculator {
銆private static int result; //瀛樺偍緇撴灉鐨勯潤鎬佸彉閲?br /> 銆public void add(int n) {
銆銆result = result + n;
銆}
銆public void substract(int n) {
銆銆result = result - 1; //閿欒錛氬簲璇ユ槸"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 (; ;) ; //閿欒錛氭棤闄愬驚鐜?br /> 銆}
銆public void clear() { //娓呴櫎緇撴灉
銆銆result = 0;
銆}
銆public void switchOn() { //鎵撳紑灞忓箷錛屾樉紺?hello"錛屽茍鎶ヨ
銆銆result = 0; //瀹炵幇鍏跺畠鐨勮綆楀櫒鍔熻兘
銆}
銆public void switchOff() { } //鏄劇ず"bye bye"錛屾姤璀︼紝騫跺叧闂睆騫?br /> 銆public int getResult() {
銆銆return result;
銆}
}

銆銆浜屻?榪佺Щ涓涓祴璇曠被

銆銆鐜板湪錛屾垜灝嗘妸涓涓凡緇忎嬌鐢↗Unit 3.8緙栧啓鎴愮殑綆鍗曠殑嫻嬭瘯綾昏縼縐誨埌JUnit 4銆傝繖涓被鏈変竴浜涚己闄鳳細瀹冩病鏈夋祴璇曟墍鏈夌殑涓氬姟鏂規硶錛岃屼笖鐪嬩笂鍘誨湪testDivide鏂規硶涓繕瀛樺湪涓涓敊璇?8/2涓嶇瓑浜?)銆傚洜涓鴻繕娌℃湁瀹炵幇涔樻硶榪愮畻鍔熻兘錛屾墍浠ュ鍏舵祴璇曞皢琚拷鐣ャ?br />
銆銆涓嬮潰錛屾垜浠妸涓や釜鐗堟湰鐨勬鏋朵箣闂寸殑宸埆浠ョ矖浣撴樉紺哄嚭鐜頒簬琛ㄦ牸1涓?br />
銆銆琛ㄦ牸1.鍒嗗埆浠Unit 3.8鍜孞Unit 4瀹炵幇鐨凜aculatorTest銆?br />
銆銆JUnit 3.8

package junit3;
import calc.Calculator;
import junit.framework.TestCase;
public class CalculatorTest extends TestCase {
銆private static Calculator calculator = new Calculator();
銆@Override protected void setUp() { calculator.clear(); }
銆public void testAdd() {
銆銆calculator.add(1);
銆銆calculator.add(1);
銆銆assertEquals(calculator.getResult()錛?2);
銆}
銆public void testSubtract() {
銆銆calculator.add(10);
銆銆calculator.subtract(2);
銆銆assertEquals(calculator.getResult()錛?8);
銆}
銆public void testDivide() {
銆銆calculator.add(8);
銆銆calculator.divide(2);
銆銆assert calculator.getResult() == 5;
銆}
銆public void testDivideByZero() {
銆銆try {
銆銆銆calculator.divide(0);
銆銆銆fail();
銆銆}
銆銆catch (ArithmeticException e) { }
銆}
銆public void notReadyYetTestMultiply() {
銆銆calculator.add(10);
銆銆calculator.multiply(10);
銆銆assertEquals(calculator.getResult()錛?100);
銆}
}

銆銆JUnit 4

package JUnit 4;
import calc.Calculator;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import static org.junit.Assert.*;
public class CalculatorTest {
銆private static Calculator calculator = new Calculator();
銆@Before public void clearCalculator() {
銆銆calculator.clear();
銆}
銆@Test public void add() {
銆銆calculator.add(1);
銆銆calculator.add(1);
銆銆assertEquals(calculator.getResult()錛?2);
銆}
銆@Test public void subtract() {
銆銆calculator.add(10);
銆銆calculator.subtract(2);
銆銆assertEquals(calculator.getResult()錛?8);
銆}
銆@Test public void divide() {
銆銆calculator.add(8);
銆銆calculator.divide(2);
銆銆assert calculator.getResult() == 5;
銆}
銆@Test(expected = ArithmeticException.class)
銆public void divideByZero() {
銆銆calculator.divide(0);
銆}
銆@Ignore("not ready yet")
銆@Test
銆public void multiply() {
銆銆calculator.add(10);
銆銆calculator.multiply(10);
銆銆assertEquals(calculator.getResult()錛?100);
銆}
}
  涓夈?鍖?br />
銆銆棣栧厛錛屼綘鍙互鐪嬪埌錛孞Unit 4浣跨敤org.junit.*鍖呰孞Unit 3.8浣跨敤鐨勬槸junit.framework.*銆傚綋鐒訛紝涓轟簡鍚戝悗鍏煎鎬ц搗瑙侊紝JUnit 4jar鏂囦歡鍙戣涓姞鍏ヤ簡榪欎袱縐嶅寘銆?br />
銆銆鍥涖?緇ф壙

銆銆鍦↗Unit4涓紝嫻嬭瘯綾諱笉蹇呭啀鎵╁睍junit.framework.TestCase錛涗簨瀹炰笂錛屽畠浠笉蹇呴』鎵╁睍浠諱綍鍐呭銆備絾鏄紝JUnit 4涓嬌鐢ㄧ殑鏄敞瑙c備負浜嗕互涓涓祴璇曠敤渚嬫柟寮忔墽琛岋紝涓涓狫Unit 4綾諱腑鑷沖皯闇瑕佷竴涓狜Test娉ㄨВ銆備緥濡傦紝濡傛灉浣犱粎浣跨敤@Before鍜孈After娉ㄨВ鑰屾病鏈夎嚦灝戞彁渚涗竴涓狜Test鏂規硶鏉ョ紪鍐欎竴涓被錛岄偅涔堬紝褰撲綘璇曞浘鎵ц瀹冩椂灝嗗緱鍒頒竴涓敊璇細

java.lang.Exception: No runnable methods.

銆銆浜斻?鏂█錛圓ssert錛夋柟娉?/strong>

銆銆鍥犱負鍦↗Unit 4涓竴涓祴璇曠被騫朵笉緇ф壙鑷猅estCase(鍦↗Unit 3.8涓紝榪欎釜綾諱腑瀹氫箟浜哸ssertEquals()鏂規硶)錛屾墍浠ヤ綘蹇呴』浣跨敤鍓嶇紑璇硶(涓句緥鏉ヨ錛孉ssert.assertEquals())鎴栬咃紙鐢變簬JDK5.0錛夐潤鎬佸湴瀵煎叆Assert綾匯傝繖鏍蜂互鏉ワ紝浣犲氨鍙互瀹屽叏璞′互鍓嶄竴鏍蜂嬌鐢╝ssertEquals鏂規硶(涓句緥鏉ヨ錛宎ssertEquals())銆?br />
銆銆鍙﹀錛屽湪JUnit 4涓紝榪樺紩鍏ヤ簡涓や釜鏂扮殑鏂█鏂規硶錛屽畠浠笓闂ㄧ敤浜庢暟緇勫璞$殑姣旇緝銆傚鏋滀袱涓暟緇勫寘鍚殑鍏冪礌閮界浉絳夛紝閭d箞榪欎袱涓暟緇勫氨鏄浉絳夌殑銆?br />
public static void assertEquals(String message錛?Object[] expecteds錛?Object[] actuals);
public static void assertEquals(Object[] expecteds錛?Object[] actuals);

銆銆鐢變簬JDK 5.0鐨勮嚜鍔ㄨ綆辨満鍒剁殑鍑虹幇錛屽師鍏堢殑錛戯紥涓猘ssertEquals鏂規硶鍏ㄩ儴鍘繪帀浜嗐備緥濡傦紝鍘熷厛JUnit 3.8涓殑assertEquals(long錛宭ong)鏂規硶鍦↗Unit 4涓浣跨敤assertEquals(Object錛孫bject)銆傚浜巃ssertEquals(byte錛宐yte)銆乤ssertEquals(int錛宨nt)絳変篃鏄繖鏍楓傝繖縐嶆敼榪涘皢鏈夊姪浜庨伩鍏嶅弽妯″紡銆?br />
銆銆鍦↗Unit 4涓紝鏂伴泦鎴愪簡涓涓猘ssert鍏抽敭瀛?瑙佹垜浠殑渚嬪瓙涓殑divide()鏂規硶)銆備綘鍙互璞′嬌鐢╝ssertEquals鏂規硶涓鏍鋒潵浣跨敤瀹冿紝鍥犱負瀹冧滑閮芥姏鍑虹浉鍚岀殑寮傚父(java.lang.AssertionError)銆侸Unit 3.8鐨刟ssertEquals灝嗘姏鍑轟竴涓猨unit.framework.AssertionFailedError銆傛敞鎰忥紝褰撲嬌鐢╝ssert鏃訛紝浣犲繀欏繪寚瀹欽ava鐨?-ea"鍙傛暟錛涘惁鍒欙紝鏂█灝嗚蹇界暐銆?br />
銆銆鍏?棰勮鐜錛團ixture錛?/strong>

銆銆Fixture鏄湪嫻嬭瘯鏈熼棿鍒濆鍖栧拰閲婃斁浠諱綍鏅氬璞$殑鏂規硶銆傚湪JUnit 3.8涓紝浣犺浣跨敤setUp()鏉ュ疄鐜拌繍琛屾瘡涓涓祴璇曞墠鐨勫垵濮嬪寲宸ヤ綔錛岀劧鍚庝嬌鐢╰earDown()鏉ヨ繘琛屾瘡涓祴璇曞悗鐨勬竻鐞嗐傝繖涓や釜鏂規硶鍦═estCase綾諱腑閮藉緱鍒伴噸杞斤紝鍥犳閮借鍞竴瀹氫箟銆傛敞鎰忥紝鎴戝湪榪欎釜Setup鏂規硶浣跨敤鐨勬槸Java5.0鍐呯疆鐨凘Override娉ㄨВ-榪欎釜娉ㄨВ鎸囩ず璇ユ柟娉曞0鏄庤閲嶈澆鍦ㄨ秴綾諱腑鐨勬柟娉曞0鏄庛傚湪JUnit 4涓紝鍒欎唬涔嬩嬌鐢ㄧ殑鏄疈Before鍜孈After娉ㄨВ錛涜屼笖錛屽彲浠ヤ互浠諱綍鍛藉悕(鍦ㄦ垜浠殑渚嬪瓙涓槸clearCalculator())鏉ヨ皟鐢ㄨ繖浜涙柟娉曘傚湪鏈枃鍚庨潰錛屾垜灝嗘洿澶氬湴瑙i噴榪欎簺娉ㄨВ銆?br />
銆銆涓冦?嫻嬭瘯

銆銆JUnit 3.8閫氳繃鍒嗘瀽瀹冪殑絳懼悕鏉ヨ瘑鍒竴涓祴璇曟柟娉曪細鏂規硶鍚嶅繀欏諱互"test"涓哄墠緙錛屽畠蹇呴』榪斿洖void錛岃屼笖瀹冨繀欏繪病鏈変換浣曞弬鏁?涓句緥鏉ヨ錛宲ublicvoidtestDivide())銆備竴涓笉閬靛驚榪欎釜鍛藉悕綰﹀畾鐨勬祴璇曟柟娉曞皢琚鏋剁畝鍗曞湴蹇界暐錛岃屼笖涓嶆姏鍑轟換浣曞紓甯革紙鎸囩ず鍙戠敓浜嗕竴涓敊璇級銆?br /> JUnit 4涓嶄嬌鐢ㄤ笌JUnit 3.8鐩稿悓鐨勭害瀹氥備竴涓祴璇曟柟娉曚笉蹇呬互'test'涓哄墠緙錛屼絾鏄浣跨敤@Test娉ㄨВ銆備絾鏄紝姝e鍦ㄥ墠涓涓鏋朵腑涓鏍鳳紝涓涓祴璇曟柟娉曚篃蹇呴』榪斿洖void騫朵笖鏄棤鍙傛暟鐨勩傚湪JUnit 4涓紝鍙互鍦ㄨ繍琛屾椂鍒繪帶鍒惰繖涓姹傦紝騫朵笖涓嶇鍚堣姹傜殑璇濅細鎶涘嚭涓涓紓甯革細

java.lang.Exception: Method xxx should have no parameters
java.lang.Exception: Method xxx should be void

銆銆@Test娉ㄨВ鏀寔鍙夊弬鏁般傚畠澹版槑涓涓祴璇曟柟娉曞簲璇ユ姏鍑轟竴涓紓甯搞傚鏋滃畠涓嶆姏鍑烘垨鑰呭鏋滃畠鎶涘嚭涓涓笌浜嬪厛澹版槑鐨勪笉鍚岀殑寮傚父錛岄偅涔堣嫻嬭瘯澶辮觸銆傚湪鎴戜滑鐨勪緥瀛愪腑錛屼竴涓暣鏁拌闆墮櫎搴旇寮曞彂涓涓狝rithmeticException寮傚父銆?br />
銆銆鍏?蹇界暐涓涓祴璇?/strong>

銆銆璁頒綇錛屼笉鑳芥墽琛屽涓柟娉曘傜劧鑰岋紝濡傛灉浣犱笉鎯寵嫻嬭瘯澶辮觸鐨勮瘽錛屼綘鍙互浠呬粎蹇界暐瀹冦傞偅涔堬紝鍦↗Unit 3.8涓紝鎴戜滑鏄浣曞疄鐜頒復鏃剁姝竴涓祴璇曠殑鍛?鏂規硶鏄細閫氳繃娉ㄩ噴鎺夊畠鎴栬呮敼鍙樺懡鍚嶇害瀹氾紝榪欐牱嫻嬭瘯榪愯鏈哄氨鏃犳硶鎵懼埌瀹冦傚湪鎴戠殑渚嬪瓙涓紝鎴戜嬌鐢ㄤ簡鏂規硶鍚峮otReadyYetTestMultiply()銆傚畠娌℃湁浠?test"寮澶達紝鎵浠ュ畠涓嶄細琚瘑鍒嚭鏉ャ傜幇鍦ㄧ殑闂鏄紝鍦ㄦ垚鐧句笂鍗冪殑嫻嬭瘯涓棿錛屼綘鍙兘璁頒笉浣忛噸鍛藉悕榪欎釜鏂規硶銆?br />
銆銆鍦↗Unit 4涓紝涓轟簡蹇界暐涓涓祴璇曪紝浣犲彲浠ユ敞閲婃帀涓涓柟娉曟垨鑰呭垹闄Test娉ㄨВ(浣犱笉鑳藉啀鏀瑰彉鍛藉悕綰﹀畾錛屽惁鍒欏皢鎶涘嚭涓涓紓甯?銆傜劧鑰岋紝璇ラ棶棰樺皢淇濈暀錛氳榪愯鏈哄皢涓嶆姤鍛婅繖鏍蜂竴涓祴璇曘傜幇鍦紝浣犲彲浠ユ妸@Ignore娉ㄨВ娣誨姞鍒癅Test鐨勫墠闈㈡垨鑰呭悗闈€傛祴璇曡繍琛屾満灝嗘姤鍛婅蹇界暐鐨勬祴璇曠殑涓暟錛屼互鍙婅繍琛岀殑嫻嬭瘯鐨勬暟鐩拰榪愯澶辮觸鐨勬祴璇曟暟鐩傛敞鎰忥紝@Ignore浣跨敤涓涓彲閫夊弬鏁?涓涓猄tring)錛屽鏋滀綘鎯寵褰曚負浠涔堜竴涓祴璇曡蹇界暐鐨勮瘽銆?br />
銆銆涔濄?榪愯嫻嬭瘯

銆銆鍦↗Unit 3.8涓紝浣犲彲浠ラ夋嫨浣跨敤鑻ュ共榪愯鏈猴細鏂囨湰鍨嬶紝AWT鎴栬匰wing銆侸Unit 4浠呬粎浣跨敤鏂囨湰嫻嬭瘯榪愯鏈恒傛敞鎰忥紝JUnit 4涓嶄細鏄劇ず浠諱綍緇胯壊鏉℃潵閫氱煡浣犳祴璇曟垚鍔熶簡銆傚鏋滀綘鎯崇湅鍒頒換浣曠被鍨嬬殑緇胯壊鐨勮瘽錛岄偅涔堜綘鍙兘闇瑕佷嬌鐢↗Unit鎵╁睍鎴栦竴縐嶉泦鎴愪簡JUnit鐨処DE錛堜緥濡侷DEA鎴栬匛clipse錛夈?br />
銆銆棣栧厛錛屾垜鎯充嬌鐢ㄨ佸紡浣嗗ソ鐢ㄧ殑junit.textui.TestRunner鏉ヨ繍琛岃JUnit 3.8嫻嬭瘯綾?鑰冭檻鍒頒嬌鐢╝ssert鍏抽敭瀛楋紝鎴戜嬌鐢ㄤ簡-ea鍙傛暟)銆?br /> java -ea junit.textui.TestRunner junit3.CalculatorTest

..F.E.
There was 1 error:
1) testDivide(junit3.CalculatorTest)java.lang.AssertionError
at junit3.CalculatorTest.testDivide(CalculatorTest.java:33)
There was 1 failure:
1) testSubtract(junit3.CalculatorTest)junit.framework.AssertionFailedError: expected:錛?錛?but was:錛?錛?br /> at junit3.CalculatorTest.testSubtract(CalculatorTest.java:27)
FAILURES!!!
Tests run: 4錛?Failures: 1錛?Errors: 1

銆銆TestDivide浜х敓涓涓敊璇紝鍥犱負鏂█紜畾浜?/2涓嶇瓑浜?銆俆estSubstract浜х敓涓涓け璐ワ紝鍥犱負10-2搴旇絳変簬8錛屼絾鏄湪榪欎釜瀹炵幇涓瓨鍦ㄤ竴涓敊璇細瀹冭繑鍥?銆?br />
銆銆鐜板湪錛屾垜浣跨敤鏂扮殑org.junit.runner.JUnitCore榪愯鏈烘潵榪愯榪欎袱涓被銆傛敞鎰忥紝瀹冭兘鎵цJUnit 4鍜孞Unit 3.8嫻嬭瘯錛岀敋鑷蟲槸榪欎簩鑰呯殑緇撳悎銆?br />

java -ea org.junit.runner.JUnitCore junit3.CalculatorTest

JUnit version 4.1

..E.E.
There were 2 failures:
1) testSubtract(junit3.CalculatorTest)
junit.framework.AssertionFailedError: expected:錛?錛?but was:錛?錛?br /> at junit.framework.Assert.fail(Assert.java:47)
2) testDivide(junit3.CalculatorTest)
java.lang.AssertionError
at junit3.CalculatorTest.testDivide(CalculatorTest.java:33)
FAILURES!!!
Tests run: 4錛?Failures: 2
***

java -ea org.junit.runner.JUnitCore JUnit 4.CalculatorTest

JUnit version 4.1
...E.EI
There were 2 failures:
1) subtract(JUnit 4.CalculatorTest)
java.lang.AssertionError: expected:錛?錛?but was:錛?錛?br /> at org.junit.Assert.fail(Assert.java:69)
2) divide(JUnit 4.CalculatorTest)
java.lang.AssertionError
at JUnit 4.CalculatorTest.divide(CalculatorTest.java:40)
FAILURES!!!
Tests run: 4錛?Failures: 2

銆銆絎竴涓潪甯告槑鏄劇殑鍖哄埆鏄紝JUnit鐗堟湰鍙瘋鏄劇ず浜庢帶鍒跺彴涓?4.1)銆傜浜屼釜鍖哄埆鏄紝JUnit 3.8鍖哄垎澶辮觸鍜岄敊璇紱JUnit 4鍒欎粎浣跨敤澶辮觸榪涜綆鍖栥備竴涓柊濂囩殑鍦版柟鏄紝瀛楁瘝"I"錛屽畠鏄劇ず涓涓祴璇曡蹇界暐銆?br />  鍗併?楂樼駭嫻嬭瘯

銆銆鐜板湪錛屾垜灝嗗睍紺篔Unit 4鐨勪竴浜涢珮綰х壒寰併傚垪琛?(瑙佷笅杞芥簮鐮?鏄竴涓柊鐨勬祴璇曠被-AdvancedTest錛屽畠媧劇敓鑷狝bstractParent銆?br />
銆銆(涓) 楂樼駭棰勮鐜

銆銆涓や釜綾婚兘浣跨敤鏂扮殑娉ㄨВ@BeforeClass鍜孈AfterClass錛岃繕鏈堾Before鍜孈After銆傝〃鏍?灞曠ず浜嗗湪榪欎簺娉ㄨВ涔嬮棿鐨勪富瑕佸尯鍒?br />
銆銆琛ㄦ牸2.@BeforeClass/@AfterClass姣旇緝浜嶡Before/@After銆?br />

@BeforeClass鍜孈AfterClass @Before鍜孈After
鍦ㄦ瘡涓被涓彧鏈変竴涓柟娉曡兘琚敞瑙c? 澶氫釜鏂規硶鑳借娉ㄨВ錛屼絾鍏舵墽琛岀殑欏哄簭鏈壒鍒寚瀹氾紝涓斾笉榪愯閲嶈澆鏂規硶銆?
鏂規硶鍚嶆槸涓嶇浉鍏崇殑 鏂規硶鍚嶆槸涓嶇浉鍏崇殑
姣忎釜綾昏繍琛屼竴嬈? 鍦ㄦ瘡涓祴璇曟柟娉曡繍琛屽墠鎴栬繍琛屽悗榪愯
鍦ㄥ綋鍓嶇被鐨凘BeforeClass鏂規硶榪愯鍓嶅厛榪愯瓚呯被鐨凘BeforeClass鏂規硶銆傚湪瓚呯被涓0鏄庣殑@AfterClass鏂規硶灝嗗湪鎵鏈夊綋鍓嶇被鐨勮鏂規硶榪愯鍚庢墠榪愯銆? 瓚呯被涓殑@Before鍦ㄦ墍鏈夊瓙綾葷殑璇ユ柟娉曡繍琛屽墠榪愯銆傚湪瓚呯被涓殑@After鍦ㄥ湪鎵鏈夊瓙綾葷殑璇ユ柟娉曡繍琛屽悗鎵嶈繍琛屻?
蹇呴』鏄叕鍏卞拰闈為潤鎬佺殑銆? 蹇呴』鏄叕鍏卞拰闈為潤鎬佺殑銆?
鍗充嬌涓涓狜BeforeClass鏂規硶鎶涘嚭涓涓紓甯革紝鎵鏈夌殑@AfterClass鏂規硶涔熶繚璇佽榪愯銆? 鍗充嬌涓涓狜Before鎴栬匑Test鏂規硶鎶涘嚭涓涓紓甯革紝鎵鏈夌殑@After鏂規硶涔熶繚璇佽榪愯銆?/td>

銆銆濡傛灉浣犱粎鏈変竴嬈¢渶瑕佸垎閰嶅拰閲婃斁鏄傝吹鐨勮祫婧愶紝閭d箞@BeforeClass鍜孈AfterClass鍙兘寰堟湁鐢ㄣ傚湪鎴戜滑鐨勪緥瀛愪腑錛孉bstractParent浣跨敤榪欎簺鍦╯tartTestSystem()鍜宻topTestSystem()鏂規硶涓婄殑娉ㄨВ鍚姩鍜屽仠姝㈡暣涓祴璇曠郴緇熴傚茍涓斿畠浣跨敤@Before鍜孈After鍒濆鍖栧拰娓呴櫎緋葷粺銆傚瓙綾籄dvancedTest涔熸販鍚堜嬌鐢ㄨ繖浜涙敞瑙c?br />
銆銆鍦ㄤ綘鐨勬祴璇曚唬鐮佷腑浣跨敤System.out.println涓嶆槸涓縐嶈壇濂界殑瀹炶返涔犳儻錛涗絾鏄紝鍦ㄨ繖涓敤渚嬩腑錛屽畠鏈夊姪浜庣悊瑙h繖浜涙敞瑙h璋冪敤鐨勯『搴忋傚綋鎴戣繍琛孉dvancedTest鏃訛紝鎴戝緱鍒板涓嬬粨鏋滐細

Start test system //鐖剁被鐨凘BeforeClass
Switch on calculator //瀛愮被鐨凘BeforeClass

Initialize test system //絎竴涓祴璇?br /> Clear calculator

Initialize test system //絎簩涓祴璇?br /> Clear calculator
Clean test system

Initialize test system //絎笁涓祴璇?br /> Clear calculator
Clean test system

Initialize test system //絎洓涓祴璇?br /> Clear calculator
Clean test system

Switch off calculator //瀛愮被鐨凘AfterClass
Stop test system //鐖剁被鐨凘AfterClass

銆銆濡備綘鎵瑙侊紝@BeforeClass鍜孈AfterClass浠呰璋冪敤涓嬈★紝鑰孈Before鍜孈Afterare鍦ㄦ瘡嬈℃祴璇曚腑閮借璋冪敤銆?

銆銆(浜? 闄愭椂嫻嬭瘯

銆銆鍦ㄥ墠闈㈢殑渚嬪瓙涓紝鎴戜負squareRoot()鏂規硶緙栧啓浜嗕竴涓祴璇曠敤渚嬨傝浣忥紝鍦ㄨ繖涓柟娉曚腑瀛樺湪涓涓敊璇?鑳藉瀵艱嚧瀹冩棤闄愬驚鐜傚鏋滄病鏈夌粨鏋滅殑璇濓紝鎴戞兂璁╄繖涓祴璇曞湪錛戠閽熷悗閫鍑恒傝繖涓鍔熻兘姝f槸timeout鍙傛暟鎵瑕佸疄鐜扮殑銆侤Test娉ㄨВ鐨勭浜屼釜鍙夊弬鏁幫紙絎竴涓弬鏁版槸蹇呴渶鐨?鍙互浣夸竴涓祴璇曞け璐ワ紝濡傛灉璇ユ祴璇曡姳璐規瘮涓涓鍏堢‘瀹氱殑鏃墮檺(姣)榪橀暱鐨勬椂闂寸殑璇濄傚綋鎴戣繍琛岃嫻嬭瘯鏃訛紝鎴戝緱鍒板涓嬬殑榪愯緇撴灉錛?br />
There was 1 failure:

1) squareRoot(JUnit 4.AdvancedTest)
java.lang.Exception: test timed out after 1000 milliseconds
at org.junit.internal.runners.TestMethodRunner.runWithTimeout(TestMethodRunner.java:68)
at org.junit.internal.runners.TestMethodRunner.榪愯(TestMethodRunner.java:43)

FAILURES!!!
Tests run: 4錛?Failures: 1

銆銆(涓? 鍙傛暟鍖栨祴璇?br />
銆銆鍦ㄥ垪琛?涓紝鎴戞祴璇曚簡squareRoot錛堝畠鏄痵quare鏂規硶鑰屼笉鏄痵quareRoot鏂規硶錛?閫氳繃鍒涘緩鑻ュ共嫻嬭瘯鏂規硶(square2錛宻quare4錛宻quare5)錛岃繖浜涙柟娉曢兘瀹屾垚鐩稿悓鐨勪簨鎯咃紙閫氳繃琚竴浜涘彉閲忓弬鏁板寲瀹炵幇錛夈傚叾瀹烇紝鐜板湪榪欓噷鐨勫鍒?綺樿創鎶鏈彲浠ラ氳繃浣跨敤涓涓弬鏁板寲嫻嬭瘯鐢ㄤ緥鍔犱互浼樺寲(鍒楄〃2)銆?br />
銆銆鍦ㄥ垪琛?錛堣鏈枃鐩稿簲涓嬭澆婧愮爜錛変腑鐨勬祴璇曠敤渚嬩嬌鐢ㄤ簡涓や釜鏂扮殑娉ㄨВ銆傚綋涓涓被琚嬌鐢ˊRunWith娉ㄩ噴鏃訛紝JUnit灝嗚皟鐢ㄨ鍙傝冪殑綾繪潵榪愯璇ユ祴璇曡屼笉鏄嬌鐢ㄧ己鐪佺殑榪愯鏈恒備負浜嗕嬌鐢ㄤ竴涓弬鏁板寲嫻嬭瘯鐢ㄤ緥錛屼綘闇瑕佷嬌鐢ㄨ繍琛屾満org.junit.runners.Parameterized銆備負浜嗙‘瀹氫嬌鐢ㄥ摢涓弬鏁幫紝璇ユ祴璇曠敤渚嬮渶瑕佷竴涓叕鍏遍潤鎬佹柟娉?鍦ㄦ鏄痙ata()錛屼絾鏄悕瀛椾技涔庢棤鍏?錛岃鏂規硶榪斿洖涓涓狢ollection錛屽茍涓旇浣跨敤@鍙傛暟鍔犱互娉ㄨВ銆備綘榪橀渶瑕佷竴涓嬌鐢ㄨ繖浜涘弬鏁扮殑鍏叡鏋勯犲嚱鏁般?br />
銆銆褰撹繍琛岃繖涓被錛岃杈撳嚭鏄?

java org.junit.runner.JUnitCore JUnit 4.SquareTest
JUnit version 4.1

.......E

There was 1 failure:
1) square[6](JUnit 4.SquareTest)
java.lang.AssertionError: expected:錛?8錛?but was:錛?9錛?br /> at org.junit.Assert.fail(Assert.java:69)

FAILURES!!!
Tests run: 7錛?Failures: 1

銆銆鍦ㄦ錛屽叡鎵ц浜?涓祴璇曪紝濂借薄緙栧啓浜嗭紬涓崟鐙殑square鏂規硶銆傛敞鎰忥紝鍦ㄦ垜浠殑嫻嬭瘯涓嚭鐜頒簡涓涓け璐ワ紝鍥犱負7鐨勫鉤鏂規槸49錛岃屼笉鏄?8銆?br />
銆銆(鍥? 嫻嬭瘯闆?br />
銆銆涓轟簡鍦↗Unit 3.8鐨勪竴涓祴璇曢泦涓繍琛岃嫢騫叉祴璇曠被錛屼綘蹇呴』鍦ㄤ綘鐨勭被涓坊鍔犱竴涓猻uite()鏂規硶銆傝屽湪JUnit 4涓紝浣犲彲浠ヤ嬌鐢ㄦ敞瑙f潵浠d箣銆備負浜嗚繍琛孋alculatorTest鍜孲quareTest錛屼綘闇瑕佷嬌鐢ˊRunWith鍜孈Suite娉ㄨВ緙栧啓涓涓┖綾匯?br />
package JUnit 4;

import org.junit.runner.RunWith;
import org.junit.runners.Suite;

@RunWith(Suite.class)
@Suite.SuiteClasses({
CalculatorTest.class錛?br /> SquareTest.class
})
public class AllCalculatorTests {}
java -ea org.junit.runner.JUnitCore JUnit 4.AllCalculatorTests
JUnit version 4.1
...E.EI.......E
There were 3 failures:
1) subtract(JUnit 4.CalculatorTest)
java.lang.AssertionError: expected:錛?錛?but was:錛?錛?br /> at org.junit.Assert.fail(Assert.java:69)
2) divide(JUnit 4.CalculatorTest)
java.lang.AssertionError
at JUnit 4.CalculatorTest.divide(CalculatorTest.java:40)
3) square[6](JUnit 4.SquareTest)
java.lang.AssertionError: expected:錛?8錛?but was:錛?9錛?br /> at org.junit.Assert.fail(Assert.java:69)
FAILURES!!!
Tests run: 11錛?Failures: 3

銆銆(浜? 嫻嬭瘯榪愯鏈?br />
銆銆鍦↗Unit 4涓紝騫挎硾鍦頒嬌鐢ㄦ祴璇曡繍琛屾満銆傚鏋滄病鏈夋寚瀹欯RunWith錛岄偅涔堜綘鐨勭被浠嶇劧浼氫嬌鐢ㄤ竴涓粯璁よ繍琛屾満(org.junit.internal.runners.TestClassRunner)鎵ц銆傛敞鎰忥紝鏈鍒濈殑Calculator綾諱腑騫舵病鏈夋樉寮忓湴澹版槑涓涓祴璇曡繍琛屾満錛涘洜姝わ紝瀹冧嬌鐢ㄧ殑鏄粯璁よ繍琛屾満銆備竴涓寘鍚竴涓甫鏈堾Test鐨勬柟娉曠殑綾婚兘闅愬惈鍦版嫢鏈変竴涓狜RunWith銆備簨瀹炰笂錛屼綘鍙互鎶婁笅鍒椾唬鐮佹坊鍔犲埌Calculator綾諱笂錛岃屼笖鍏惰緭鍑虹粨鏋滀細瀹屽叏涓鏍楓?br />
import org.junit.internal.runners.TestClassRunner;
import org.junit.runner.RunWith;
@RunWith(TestClassRunner.class)
public class CalculatorTest {
...
}

銆銆鍦ˊParameterized鍜孈Suite鐨勬儏鍐典笅錛屾垜闇瑕佷竴涓壒瀹氱殑榪愯鏈烘潵鎵ц鎴戠殑嫻嬭瘯鐢ㄤ緥銆傝繖灝辨槸涓轟粈涔堟垜鏄懼紡鍦版敞瑙d簡瀹冧滑銆?br />  鍗佷竴銆?宸ュ叿闆嗘垚鍔熻兘

銆銆褰撴垜鍐欐湰鏂囨椂錛孞Unit 4鍦↖DE鏂歸潰鐨勯泦鎴愯繕涓嶆槸寰堢悊鎯熾備簨瀹炰笂錛屽鏋滀綘璇曞浘榪愯鎴戜滑鍒氭墠鐪嬪埌鐨勯偅涓祴璇曠被鐨勮瘽錛屽畠浠棤娉曞伐浣滃湪浠諱綍IDE鐜涓紝鍥犱負瀹冧滑涓嶈兘琚瘑鍒負嫻嬭瘯綾匯備負浜嗗悜鍓嶅吋瀹規ц搗瑙侊紝JUnit 4鍙戣涓甫鏈変竴涓傞厤鍣?junit.framework.JUnit 4TestAdapter)錛屼綘蹇呴』鎶婂畠浣跨敤浜庝竴涓猻uite()鏂規硶涓備笅闈㈡槸浣犲繀欏繪坊鍔犲埌姣忎釜綾諱腑鐨勪唬鐮侊紱榪欐牱浠ユ潵錛屽畠浠墠鑳戒負鍚勭IDE錛孉nt浠ュ強JUnit 3.8涓殑鏂囨湰榪愯鏈烘墍璇嗗埆錛?br />
public static junit.framework.Test suite() {
銆return new JUnit 4TestAdapter(CalculatorTest.class);
}

銆銆(涓) Intellij IDEA

銆銆IDEA 5騫舵病鏈夐泦鎴怞Unit 4銆傛病鏈夊姙娉曪紝鎴戜滑鍙ソ絳夊緟IDEA 6涓疄鐜拌繖涓闆嗘垚浜嗐傚湪榪欎釜渚嬪瓙涓紝鎴戜嬌鐢ㄤ簡杈冩棭鐨勫彂琛岀増鏈?Demetra build 5321)錛涗絾鏄紝鍙傛暟鍖栨祴璇曠敤渚嬩粛涓嶈兘宸ヤ綔銆傚浘1灞曠ず浜嗚繖涓狢alculatorTest鐨勬墽琛屾儏鍐?琚拷鐣ョ殑嫻嬭瘯浠ヤ竴涓笉鍚岀殑鍥炬爣鏍囧織)銆?br />

鍥?.IDEADemetra浠呰兘榪愯CalculatorTest銆?br />
鍥?.Eclipse 3.2RC7鑳藉榪愯嫻嬭瘯闆嗙被AllCalculatorTests銆?/div>

銆銆(浜? Eclipse

銆銆鎴戠幇鍦ㄤ嬌鐢ㄧ殑鏄疎clipse鐨?.2 RC7鐗堟湰銆傝櫧鐒跺畠榪樹笉鏄竴涓ǔ瀹氬彂琛岀増鏈紝浣嗘槸鍏朵笌JUnit 4鐨勯泦鎴愪紭浜嶪DEA銆備笂鍥撅紥灞曠ず浜嗗湪榪愯AllCalculatorTests綾繪椂浣犺兘鐪嬪埌鐨勭粨鏋溿?br />
銆銆濡備綘鎵瑙侊紝璇ュ弬鏁板寲嫻嬭瘯鐢ㄤ緥(SquareTest)琚弿榪頒負7涓崟鐙殑嫻嬭瘯銆?br />
銆銆(涓? Ant闆嗘垚

銆銆junit浠誨姟褰撳墠浠呬粎鏀寔JUnit 3.8椋庢牸嫻嬭瘯錛涜繖涔熷氨鏄錛屼綘榪樺繀欏葷敤涓涓狫Unit 4 TestAdapter鏉ュ寘瑁呬綘鐨凧Unit 4嫻嬭瘯錛涜繖鏍鳳紝瀹冧滑鎵嶈兘鍦ˋnt涓繍琛屻傝繖涓紲junit錛炰換鍔′笌鍏跺湪JUnit 3.8涓敤娉曚竴鏍鳳細

錛?-- Test --錛?br /> 錛渢arget name="test" depends="compile"錛?br /> 錛渏unit fork="yes" haltonfailure="yes"錛?br /> 錛渢est name=" JUnit 4.AllCalculatorTests"/錛?br /> 錛渇ormatter type="plain" usefile="false"/錛?br /> 錛渃lasspath refid="classpath"/錛?br /> 錛?junit錛?br /> 錛?target錛?/td>

鍗佷簩銆?緇撹

銆銆鏈夊緢闀夸竴孌墊椂闂達紝JUnit綆鐩存垚浜嗕簨瀹炰笂鐨勫崟鍏冩祴璇曟鏋舵爣鍑嗐備絾鏄紝榪戞潵錛岃繖涓鏋朵技涔庢棤澶?鍔ㄩ潤"錛氭病鏈夐噸瑕佺殑鍙戣鐗堟湰錛屾病鏈夊紩浜烘敞鐩殑鏂扮壒寰佸嚭鐜般傝繖鍙兘鏄負浠涔堝叾瀹冩祴璇曟鏋訛紝渚嬪Test-NG寮濮嬮愭笎鍗犲眳嫻嬭瘯妗嗘灦甯傚満緇熸不鍦頒綅鐨勫師鍥犮?br />
銆銆闅忕潃榪欎釜鏂扮増鏈殑鍙戣錛孞Unit鍙堝嚭鐜頒簡鏂扮殑杞満銆傚浠婏紝瀹冩彁渚涗簡璁稿鏂扮殑API錛岃屼笖鐜板湪榪樹嬌鐢ㄦ敞瑙o紝鎵浠ヤ嬌寮鍙戞祴璇曠敤渚嬫洿涓哄鏄撱備簨瀹炰笂錛岃JUnit寮鍙戣呭凡緇忓紑濮嬭冭檻鏂扮殑鏈潵鐨勬敞瑙i棶棰樸備緥濡傦紝浣犲彲浠ュ湪涓涓緷璧栦簬鍓嶆彁(涓句緥鏉ヨ錛屼綘闇瑕佸湪綰垮湴鎵ц榪欎釜嫻嬭瘯)鐨勬祴璇曠敤渚嬩笂娣誨姞涓涓狜Prerequisite娉ㄨВ錛涙垨鑰呮坊鍔犱竴涓兘澶熸寚瀹氶噸澶嶆鏁板強鏃墮檺(涓句緥鏉ヨ錛岄噸澶嶆祴璇?嬈′互紜繚鐪熸鍑虹幇浜嗕竴涓椂闄愰棶棰?鐨凘Repeat娉ㄨВ錛涙垨鑰呯敋鑷沖湪@Ignore娉ㄨВ涓婃坊鍔犱竴涓鉤鍙板弬鏁幫紙涓句緥鏉ヨ錛孈Ignore(platform=macos)錛岃繖灝嗗彧鏈変綘鍦ㄤ竴涓狹acOS騫沖彴涓婅繍琛屾椂鎵嶅拷鐣ヤ竴涓祴璇?銆備粠鏈枃涓綘鑳界湅鍒幫紝JUnit鐨勬湭鏉ヤ緷鐒剁伩鐑傝緣鐓屻?/font>

]]>
TestSuite灝忚http://www.tkk7.com/supercrsky/articles/162774.html銆呬笂鍠勮嫢姘淬?/dc:creator>銆呬笂鍠勮嫢姘淬?/author>Sat, 24 Nov 2007 00:34:00 GMThttp://www.tkk7.com/supercrsky/articles/162774.htmlhttp://www.tkk7.com/supercrsky/comments/162774.htmlhttp://www.tkk7.com/supercrsky/articles/162774.html#Feedback0http://www.tkk7.com/supercrsky/comments/commentRss/162774.htmlhttp://www.tkk7.com/supercrsky/services/trackbacks/162774.html鎮ㄥ畾涔夎嚜宸辯殑TestCase錛屽茍浣跨敤TestRunner鏉ヨ繍琛屾祴璇曪紝浜嬪疄涓奣estRunner騫朵笉鐩存帴榪愯 TestCase涓婄殑鍗曞厓鏂規硶錛岃屾槸閫忚繃TestSuite錛孴estSuite鍙互灝嗘暟涓猅estCase鍦ㄤ竴璧鳳紝鑰岃姣忎釜TestCase淇濇寔綆鍗曘?/font>

鏉ョ湅鐪嬩竴涓緥瀛愶細
  • MathToolTest.java
package onlyfun.caterpillar.test;

import onlyfun.caterpillar.MathTool;
import junit.framework.TestCase;

public class MathToolTest extends TestCase
{
    
public MathToolTest(String testMethod)
    
{
        
super(testMethod);
    }


    
public void testGcd()
    
{
        assertEquals(
5, MathTool.gcd(105));
    }


    
public static void main(String[] args)
    
{
        junit.textui.TestRunner.run(MathToolTest.
class);
    }

}

鍦ㄨ繖涓緥瀛愪腑錛屾偍騫舵病鏈夌湅鍒頒換浣曠殑TestSuite錛屼簨瀹炰笂錛屽鏋滄偍娌℃湁鎻愪緵浠諱綍鐨凾estSuite錛孴estRunner浼氳嚜宸卞緩绔嬩竴涓紝鐒跺悗榪欎釜 TestSuite浼氫嬌鐢ㄥ弽灝勶紙reflection錛夎嚜鍔ㄦ壘鍑簍estXXX()鏂規硶銆?br />
濡傛灉鎮ㄨ鑷鐢熸垚TestSuite錛屽垯鍦ㄧ戶鎵縏estCase涔嬪悗錛屾彁渚涢潤鎬佺殑錛坰tatic錛夌殑suite()鏂規硶錛屼緥濡傦細
public static Test suite() {
     
return new TestSuite(MathTool.class);
}


濡傛灉鎮ㄦ病鏈夋彁渚涗換浣曠殑TestSuite錛屽垯TestRunner灝變細鍍忎笂闈㈣繖鏍瘋嚜鍔ㄤ負鎮ㄥ緩绔嬩竴涓紝騫舵壘鍑簍estXXX()鏂規硶錛屾偍涔熷彲浠ュ涓嬮潰瀹氫箟 suite()鏂規硶錛?br />
public static Test suite() {
     TestSuite suite 
= new TestSuite(MathTool.class);
     suite.addTest(
new MathToolTest("testGcd"));
     
return suite;
}


 
JUnit騫舵病鏈夎瀹氭偍涓瀹氳浣跨敤testXXX()榪欐牱鐨勬柟寮忔潵鍛藉悕鎮ㄧ殑嫻嬭瘯鏂規硶錛屽鏋滄偍瑕佹彁渚涜嚜宸辯殑鏂規硶錛堝綋鐒禞Unit 榧撳姳鎮ㄤ嬌鐢╰estXXX()榪欐牱鐨勬柟娉曞悕縐幫級錛屽垯鍙互濡備笂鎾板啓錛屼負浜嗚鑳藉浣跨敤寤烘瀯鍑藉紡鎻愪緵嫻嬭瘯鏂規硶鍚嶇О錛屾偍鐨凾estCase蹇呴』鎻愪緵濡備笅鐨勫緩鏋勫嚱寮忥細
public MathToolTest(String testMethod) {
    
super(testMethod);
}

 

濡傛灉瑕佸姞鍏ユ洿澶氱殑嫻嬭瘯鏂規硶錛屼嬌鐢╝ddTest()灝卞彲浠ヤ簡錛宻uite()鏂規硶浼犲洖涓涓猅estSuite鐗╀歡錛屽畠涓?TestCase閮藉疄浣滀簡Test浠嬮潰錛孴estRunner浼氳皟鐢═estSuite涓婄殑run()鏂規硶錛岀劧鍚嶵estSuite浼氬皢涔嬪鎵樼粰 TestCase涓婄殑run()鏂規硶錛屽茍鎵ц姣忎竴涓猼estXXX()鏂規硶銆?br />
闄や簡緇勫悎TestCase涔嬪錛屾偍榪樺彲浠ュ皢鏁頒釜TestSuite緇勫悎鍦ㄤ竴璧鳳紝渚嬪錛?/font>
public static Test suite() 
    TestSuite suite
= new TestSuite(); 
    suite.addTestSuite(TestCase1.
class);
    suite.addTestSuite(TestCase2.
class); 
    
return suite; 
}

 
濡傛涔嬫潵錛屾偍鍙互涓嬈¤繍琛屾墍鏈夌殑嫻嬭瘯錛岃屼笉蹇呬釜鍒殑榪愯姣忎竴涓祴璇曟渚嬶紝鎮ㄥ彲浠ュ啓涓涓繍琛屽叏閮ㄦ祴璇曠殑涓繪祴璇曪紝鑰屽湪浣跨敤TestRunner鏃跺懠鍙?suite()鏂規硶錛屼緥濡傦細
junit.textui.TestRunner.run(TestAll.suite());


TestCase涓嶵estSuite閮藉疄浣滀簡Test浠嬮潰錛屽叾榪愯鏂瑰紡涓?Command 妯″紡 鐨勪竴涓疄渚嬶紝鑰孴estSuite鍙互緇勫悎鏁頒釜TestSuite鎴朤estCase錛岃繖鏄?Composite 妯″紡 鐨勪竴涓疄渚嬨?br />

]]>
JUnit4.x涓嶫Unit3.x鐨勪竴涓噸瑕佸尯鍒?/title><link>http://www.tkk7.com/supercrsky/articles/162772.html</link><dc:creator>銆呬笂鍠勮嫢姘淬?/dc:creator><author>銆呬笂鍠勮嫢姘淬?/author><pubDate>Fri, 23 Nov 2007 23:56:00 GMT</pubDate><guid>http://www.tkk7.com/supercrsky/articles/162772.html</guid><wfw:comment>http://www.tkk7.com/supercrsky/comments/162772.html</wfw:comment><comments>http://www.tkk7.com/supercrsky/articles/162772.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.tkk7.com/supercrsky/comments/commentRss/162772.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/supercrsky/services/trackbacks/162772.html</trackback:ping><description><![CDATA[<p><br /> <span style="font-family: Comic Sans MS">鍦↗Unit3.x涓嫻嬭瘯蹇呴』緇ф壙 TestCase,騫朵笖姣忎釜鏂規硶鍚嶅繀欏諱互test寮澶?姣斿:testMethod1</span></p> <p><span style="font-family: Comic Sans MS">()鑰屽湪JUnit4.x涓笉蹇呯戶鎵縏estCase,閲囩敤浜嗘敞瑙g殑鏂瑰紡.鍙鍦ㄦ祴璇曠殑鏂規硶涓婂姞涓婃敞瑙?/span></p> <p><span style="font-family: Comic Sans MS">@Test,鍗沖彲.鍦↗Unit4.x涓鏋滅戶鎵夸簡TestCase,鑰屾敞瑙e氨涓嶈搗浣滅敤浜?騫朵笖鏈夊緢閲嶈鐨勪竴鐐?/span></p> <p><span style="font-family: Comic Sans MS">灝辨槸鍦↗Unit4.x涓戶鎵夸簡TestCase鍚?鍦∣utLine瑙嗗浘涓祴璇曞崟涓柟娉曟椂,緇撴灉鏁翠釜綾婚兘run</span></p> <p><span style="font-family: Comic Sans MS">浜? 榪樻湁涓鐐瑰氨鏄?鍦?.x涓渶瑕佸疄鐜皊etUp鍜宼earDown鏂規硶,鑰屽湪4.x涓棤闇榪欐牱,鍙互鑷畾涔?/span></p> <p><span style="font-family: Comic Sans MS">闇瑕佸湪嫻嬭瘯鍓嶅拰嫻嬭瘯鍚庣殑鏂規硶,鍦ㄦ柟娉曞墠鍔犱笂Annotation@before,@after灝卞彲浠ヤ簡.<br /> 瀵規,鍦↗Unit4.x涓嶅繀緇ф壙TestCase鐢ㄦ敞瑙e嵆鍙鍗曚釜鏂規硶榪涜嫻嬭瘯.榪欎釜闂閮侀椃浜?br /> 鎴戝崐澶?瑙e喅浜?鐪熼珮鍏?</span></p> <p> <br /> </p> <img src ="http://www.tkk7.com/supercrsky/aggbug/162772.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/supercrsky/" target="_blank">銆呬笂鍠勮嫢姘淬?/a> 2007-11-24 07:56 <a href="http://www.tkk7.com/supercrsky/articles/162772.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>EasyMock浣跨敤鎵嬭http://www.tkk7.com/supercrsky/articles/162766.html銆呬笂鍠勮嫢姘淬?/dc:creator>銆呬笂鍠勮嫢姘淬?/author>Fri, 23 Nov 2007 23:22:00 GMThttp://www.tkk7.com/supercrsky/articles/162766.htmlhttp://www.tkk7.com/supercrsky/comments/162766.htmlhttp://www.tkk7.com/supercrsky/articles/162766.html#Feedback0http://www.tkk7.com/supercrsky/comments/commentRss/162766.htmlhttp://www.tkk7.com/supercrsky/services/trackbacks/162766.html闃呰鍏ㄦ枃

]]>
主站蜘蛛池模板: 国产乱妇高清无乱码免费| 亚洲色中文字幕在线播放| 麻豆亚洲AV成人无码久久精品| 96免费精品视频在线观看| 亚洲男同帅GAY片在线观看| 国产久爱免费精品视频| 亚洲人成人网站在线观看| 苍井空亚洲精品AA片在线播放| 免费无码又爽又刺激高潮| 亚洲欧好州第一的日产suv| 成人免费a级毛片无码网站入口| 国产成人精品日本亚洲18图| 在线观看无码AV网站永久免费| 亚洲Av高清一区二区三区| 久久久www成人免费毛片| 亚洲一区二区三区丝袜| 日本免费福利视频| 美女免费精品高清毛片在线视| 亚洲国产成人久久综合野外| 精精国产www视频在线观看免费| 亚洲乱亚洲乱妇无码麻豆| 久久国产精品萌白酱免费| 亚洲人成7777影视在线观看| 妞干网免费视频在线观看| 国产成人+综合亚洲+天堂| 一本色道久久综合亚洲精品高清| av永久免费网站在线观看| 亚洲综合男人的天堂色婷婷| 拍拍拍又黄又爽无挡视频免费| 美女视频黄频a免费| 伊人久久大香线蕉亚洲| 99免费观看视频| 亚洲综合av一区二区三区| 亚洲精品第一国产综合境外资源| 成全视频免费观看在线看| 亚洲免费电影网站| 亚洲高清最新av网站| 久久精品一本到99热免费| 亚洲日韩久久综合中文字幕| 国产亚洲精品久久久久秋霞| 国产曰批免费视频播放免费s|