Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
cucumber²âÊÔ¿ò¼Ü×ÛÊö
 
×÷Õߣºying105525
  2509  次浏览      27
 2019-12-11
 
±à¼­ÍƼö:
±¾ÎĽ²½âÁËCucumberÈý´ó×é³É£¬Features Óï·¨¹æÔò£¬CucumberµÄ¿ª·¢¹ý³Ì,Ï£ÍûÄܶÔÄúÓÐËù°ïÖú¡£
±¾ÎÄÀ´×ÔÓÚcsdn£¬ÓÉ»ðÁú¹ûÈí¼þDelores±à¼­¡¢ÍƼö¡£

1.1 ʲôÊÇBDD£¨ÐÐΪÇý¶¯¿ª·¢£©

Ê×ÏÈÁ˽âÒ»¸ö¸ÅÄBDD£¨BehaviorDrivenDevelopment£ºÐÐΪÇý¶¯¿ª·¢£©ÎªÓû§ÌṩÁË´Ó ¿ª·¢ÈËÔ±ºÍ¿Í»§µÄÐèÇó´´½¨²âÊԽű¾µÄ»ú»á¡£Òò´Ë£¬¿ªÊ¼Ê±£¬¿ª·¢ÈËÔ±£¬ÏîÄ¿¾­Àí£¬ÖÊÁ¿±£Ö¤£¬Óû§ÑéÊÕ²âÊÔÈËÔ±ºÍ²úÆ·ËùÓÐÕߣ¨¹É¶«£©¶¼Æë¾ÛÒ»Ì㬼¯Ë¼¹ãÒæ£¬ÌÖÂÛÓ¦¸Ã´«µÝÄÄЩ²âÊÔ³¡¾°£¬ÒÔ±ã³É¹¦µ÷ÓôËÈí¼þ/Ó¦ÓóÌÐò¡£ÕâÑùËûÃÇÏë³öÁËÒ»×é²âÊÔ³¡¾°¡£ËùÓÐÕâЩ²âÊԽű¾¶¼ÊǼòµ¥µÄÓïÑÔ£¬ËùÒÔËüÒ²¿ÉÒÔ·þÎñÓÚÎĵµ¡£

1.2 Cucumber ¼ò½é

CucumberÊÇÒ»¸ö²âÊÔ¿ò¼Ü¡£ÓÐÈË˵£¬Õâ¸ö¿ò¼Ü·Ç³£ÊʺÏUI×Ô¶¯»¯²âÊÔ£¬Ëû²» ½öÄܰÑÓÃÀýÖеIJâÊÔ²½ÖèÒԷdz£ÓѺõÄÐÎʽչÏÖ³öÀ´£¬¶øÇÒÄܹ»·Ç³£Áé»îµÄ¹¹½¨³¡¾°¡£

Cucumber ÊÇÒ»¸öÄܹ»Àí½âÓÃÆÕͨÓïÑÔ ÃèÊöµÄ²âÊÔÓÃÀýµÄÐÐΪÇý¶¯¿ª·¢£¨BDD£©µÄ×Ô¶¯»¯²âÊÔ¹¤¾ß£¬ÓÃRuby±àд£¬Ö§³ÖJavaºÍ¡¤NetµÈ¶àÖÖ¿ª·¢ÓïÑÔ¡£

Cucumber¿ÉÒÔÈÃÈËÃÇÓýüËÆ×ÔÈ»µÄÓïÑÔÈ¥ÃèÊöFeature£¨Ê²Ã´ÊÇFeatureÔÚºóÃæÓн²Êö£©ºÍ³¡¾°£¬¸ù¾ÝFeatureÇý¶¯¿ª·¢¡£ÓÃ×÷Èí¼þ¼¼ÊõÈËÔ±ºÍ·Ç¼¼ÊõÖ®¼äÑéÊÕ²âÊÔµÄÇÅÁº¡£ËüÊÇÒ»¸öÃüÁîÐй¤¾ß¡£ÔËÐк󣬻áÖ´ÐÐfeaturesÖеÄÄÚÈÝ¡£featureÖеÄstep»áµ÷ÓÃstepdefinitions£¨Ruby´úÂ룩¿ÉÒÔÓñêÇ©À´×éÖ¯³¡¾°Ö§³Ö40¶àÖÖÓïÑÔ¸ßÖÊÁ¿¼¯³ÉRuby¡£

Óŵ㣺

CucumberÖ§³Ö²»Í¬µÄÓïÑÔ£¬ÀýÈçJava¡¢.net¡¢Ruby

Ëü³äµ±ÒµÎñÓë¼¼Êõ¼äÇÅÁºµÄ½ÇÉ«¡£¿ÉÒÔͨ¹ýÔÚ´¿Ó¢ÎÄÎı¾Öд´½¨Ò»¸ö²âÊÔÓÃÀýÀ´ÊµÏÖÕâÒ»µã¡£

ËüÔÊÐíÔÚ²»ÖªµÀÈκδúÂëµÄÇé¿öϱàд²âÊԽű¾£¬ËüÔÊÐí·Ç³ÌÐòÔ±²ÎÓë¡£

ËüÒԶ˵½¶Ë²âÊÔ¿ò¼ÜΪĿµÄ

ÓÉÓÚ¼òµ¥µÄ²âÊԽű¾¼Ü¹¹£¬CucumberÌṩÁË´úÂë¿ÉÖØÓÃÐÔ

1.3 CucumberÈý´ó×é³É

CucumberÓÐÈý¸öÖØÒª×é³É²¿·Ö£¬Features¡¢Step_definitions¡¢Cucumber command

×é¼þÖ®¼äµÄ¹¤×÷Ô­ÀíÈçͼ£º

1.4 Features

Óï·¨¹æÔò£º

»ùÓÚGherkin¡£GherkinÊÇÒ»ÖÖ¼òµ¥µÄÓ¢ÓïÎı¾ÓïÑÔ£¬ËüÓÐÖúÓÚ¹¤¾ß¨CCucumber½âÊͺÍÖ´ÐвâÊԽű¾¡£Ö§³ÖÓïÑÔ£º# language: en £¨zh-CN£©µÈ

FeaturesÎļþ±ØÐëÒÔ.featuresÃüÃû¡£°üº¬title£¬¶à¸öscenarios£¬Ã¿¸öscenario°üº¬¶à¸östep¡£

Step¶¨Ò屨ÐëÒԹؼü×ÖGiven£¬When£¬Then£¬And¿ªÊ¼¡£

1.5 Step_definitions

¸ù¾ÝfeatureÎļþÖж¨ÒåµÄstep±àд¶ÔÓ¦µÄ²âÊÔ´úÂë

1.6 Cucumber command

ÔËÐУº*.featureÎļþ¡£cucumber»á·ÖÎöfeatureÎļþÖж¨ÒåµÄstep£¬È»ºóÈ¥step - definitionsѰÕÒÏàÆ¥ÅäµÄstep£¬Ö´ÐÐstepÖеĴúÂë¡£ÔËÐнá¹ûÒÔhtmlµÄÐÎʽ±£´æ£¬failµÄÇé¿ö²é¿´¶ÔÓ¦logÈÕÖ¾¡£ÔÚIDEAÉÏ¿ÉÒÔÖ±½Óµã»÷²âÊÔÀà½øÐÐÔËÐУ¬¾ßÌå»áÔÚºóÃæµÄÀý×ÓÖнøÐÐ˵Ã÷¡£

1.7 CucumberµÄ¿ª·¢¹ý³Ì

´´½¨featureÎļþ£¬°üÀ¨feature,scenariosºÍstep¡£

´´½¨step_definitions¡£IDEAÖпÉÓÒ»÷×Ô¶¯´´½¨¡£

cucumber ¨Cformat progress¡£¸ñʽ»¯Êä³ö¡£¿ÉÐÞ¸ÄΪhtml£¬xmlµÈ¸ñʽÊä³ö¡£

Ìí¼Ó¶ÏÑÔ£º

Ò»¸ö³¡¾°Ê§°Ü£¬Cucumber½«´Ë³¡¾°±ê¼Çʧ°Ü£¬×ªÈ¥Ö´ÐÐÏÂÒ»³¡¾°¡£ Ò»¸östepʧ°Ü£¬»áÌø¹ýÕâ¸öscenarioµÄÆäÓàstep£¬´Ó¶øÖÕÖ¹Õâ¸öscenario¡£

1.8 ʵ¼ù

1.Ê×ÏÈ´´½¨Ò»¸öMAVEN ÏîÄ¿¡£

һ·nextÖ±µ½´´½¨Íê³É¡£

2. ÔÚpom.xml ÎļþÖÐÌí¼ÓËùÐèÒªµÄÒÀÀµ

<dependencies>
<dependency>
<groupId>info.cukes
</groupId>
<artifactId>cucumber-
java</artifactId>
<scope>test</scope>
<version>1.2.4</version>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-
jvm</artifactId>
<version>1.2.4</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-junit
</artifactId>
<version>1.2.4</version>
<exclusions>
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.
selenium</groupId>
<artifactId>selenium-java
</artifactId>
<!--<version>2.9</version>-->
</dependency>
</dependencies>

3.ÔÚtestĿ¼Ï´´½¨resourcesĿ¼£¬²¢±ê¼ÇΪtestResourceĿ¼£¬ÔÚÆäÏ´´½¨test.featureÎļþ£¬²¢½øÐбàд¡£

Feature: Mernagria
Scenario: registe new pet
Given I am on the "new pet" page
And I click the "registe" button
Then I should go to
the "register" page

¶ÔÓ¦´«Í³²âÊÔ¹¤¾ß£º

Feature£º´ý²â¹¦ÄܵÄÃû³Æ¡£

Description£¨¿ÉÑ¡£©£ºÃèÊö²âÊÔÖеŦÄÜ¡£

Scenario£ºÊ²Ã´ÊDzâÊÔ³¡¾°¡£

When£ºÎªÁËÖ´ÐÐÏÂÒ»²½Ö裬Ӧ¸ÃÆ¥ÅäµÄÌØ¶¨Ìõ¼þ¡£

Then£ºÈç¹ûÂú×ãWHENÖÐÌáµ½µÄÌõ¼þ£¬Ó¦¸Ã»á·¢Éúʲô¡£

´Ëʱtest.featureÎļþÖлáÓÐÌáʾ£¬

4.´´½¨featureÎļþ¶ÔÓ¦µÄstep¶¨ÒåÀà¡£

°´×¡ALT+Enter£¬´´½¨¶ÔÓ¦µÄjavaÀ࣬Ҳ¾ÍÊÇstep¶¨ÒåÀàÎļþ£¬

µÃµ½Ò»¸öеÄÀàÒÔ¼°¶ÔÓ¦µÄ·½·¨Ìå¡£

ÆäÖÐMyStepdefsÊÇÉÏÒ»²½×Ô¶¯Éú³ÉµÄstep¶¨ÒåÀ࣬ÆäÖеķ½·¨ÌåÔòÊǸù¾ÝÇ°Ãætest.featureÎļþÖеĵÚÒ»¾ä×Ô¶¯Éú³ÉµÄ£¬ÎÒÃÇÒ²¿ÉÒÔÒ»´ÎÐÔÉú³ÉËùÓеĶÔÓ¦·½·¨£¬»òÕßÒ»²½Ò»²½Éú³É¡£×îÖÕ½á¹ûÈçÏ MyStepdefs.java ¡£

import cucumber.api.
PendingException;
import cucumber.api.
java.en.And;
import cucumber.api.
java.en.Given;
import cucumber.api.
java.en.Then;
/**
* @desc: XXXX
* @version:1.0.0
* @author:Ying
* @Date: 2018/8/6
*/
public class MyStepdefs {
@Given("^I am on the \"
([^\"]*)\" page$")
public void iAmOnThePage
(String arg0) throws Throwable{
// Write code here that
turns the phrase above into
concrete actions
throw new PendingException();
}
@And("^I click the \"
([^\"]*)\" button$")
public void iClickTheButton
(String arg0) throws Throwable{
// Write code here that turns
the phrase above into concrete
actions
throw new PendingException();
}
@Then("^I should go to the
\"([^\"]*)\" page$")
public void iShouldGoToThePage
(String arg0) throws Throwable{
// Write code here that turns
the phrase above into concrete
actions
throw new PendingException();
}
}

5.´´½¨²âÊÔÆô¶¯Àà¡£

ÔÚtest/java·¾¶Ï ´´½¨DemoRun javaÀ࣬´úÂëÈçÏ£º

import cucumber.api.
CucumberOptions;
import cucumber.api.
junit.Cucumber;
import org.junit.
runner.RunWith;
/**
* @desc: XXXX
* @version:1.0.0
* @author:Ying
* @Date: 2018/8/6
*/
@RunWith(Cucumber.class)
@CucumberOptions
(features = "src/test/resources")
public class DemoRun {
}

ÆäÖÐ@RunWith×¢½â¾ÍÊÇÖ¸¶¨ÔËÐеÄÊǻƹâ²âÊÔ¿ò¼Ü£¬@CucumberOptionsÔòÊÇÖ¸¶¨¶ÔÓ¦µÄfeatureÎļþËùÔÚµÄλÖ㬴˴¦ÊÇsrcĿ¼ÏµÄtestϵÄresourcesÎļþ¼Ð¡£

×îÖÕµÄÎļþ½á¹¹ÈçÏ£º

ÓÒ¼üÔËÐÐDemoRun£¬µÃµ½ÈçÏÂÊä³ö£º

´ÓÖп´¾ÍÊÇÎÒÃǵIJâÊÔ£¬Ò»¸öScenarios£¬Èý¸öSteps Ò»¸ö¹ÒÆð£¬2¸öÌø¹ý¡£

Èç¹ûÎÒÃǰѵÚÒ»¸östep¸ÄΪ

@Given("^I am on the
\"([^\"]*)\" page$")
public Boolean iAmOnThePage
(String arg0) throws Throwable{
// Write code here that
turns the phrase above into
concrete actions
// throw new PendingException();
System.out.println("ÕâÊǵÚÒ»²½");
return true;
}

ÔÙ´ÎÔËÐУ¬µÃµ½ÈçϽá¹û

Èô3¸ö¶¼¸ÄΪ·µ»Øture£¬ÔòȫΪpass¡£

×îºó»¹ÒªËµÒ»µã£¬³ýÁË¿ÉÒÔÖ±½Óµã»÷DemoRun·½·¨ÔËÐвâÊÔÒÔÍ⣬ÎÒÃÇ»¹¿ÉÒÔÔÚtest/java ·¾¶ÏÂн¨Ò»¸öĿ¼£¬±ÈÈçrunÎļþ¼Ð£¬È»ºóÔÚÆäÖд´½¨ºÍÇ°ÃæMyStepdefsÄÚÈÝÒ»ÑùµÄjavaÀà¡£´´½¨Íê³Éºó£¬ÓÒ»÷resourcesĿ¼ÏµÄtest.featureÎļþ£¬Ñ¡Ôñ¡±Create featuer test¡±,ÈçÏÂͼËùʾ

×¢Ò⣬ÔÚGlueÖÐÌîдStep¶¨ÒåÀàµÄ·¾¶£¬´Ë´¦ÎªrunÎļþ¼Ð¡£´´½¨Íê³Éºóµã»÷ÔËÐÐ

Ч¹ûÓëÇ°ÃæµÄÖ±½Óµã»÷DemoRunÒ»Ñù¡£

ÖÁ´Ë£¬ÎÒÃǵĵÚÒ»¸öСDemoÒѾ­ÅÜÆðÀ´ÁË¡£

   
2509 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

΢·þÎñ²âÊÔÖ®µ¥Ôª²âÊÔ
һƪͼÎÄ´øÄãÁ˽â°×ºÐ²âÊÔÓÃÀýÉè¼Æ·½·¨
È«ÃæµÄÖÊÁ¿±£ÕÏÌåϵ֮»Ø¹é²âÊÔ²ßÂÔ
È˹¤ÖÇÄÜ×Ô¶¯»¯²âÊÔ̽Ë÷
Ïà¹ØÎĵµ

×Ô¶¯»¯½Ó¿Ú²âÊÔʵ¼ù֮·
jenkins³ÖÐø¼¯³É²âÊÔ
ÐÔÄܲâÊÔÕï¶Ï·ÖÎöÓëÓÅ»¯
ÐÔÄܲâÊÔʵÀý
Ïà¹Ø¿Î³Ì

³ÖÐø¼¯³É²âÊÔ×î¼Ñʵ¼ù
×Ô¶¯»¯²âÊÔÌåϵ½¨ÉèÓë×î¼Ñʵ¼ù
²âÊԼܹ¹µÄ¹¹½¨ÓëÓ¦ÓÃʵ¼ù
DevOpsʱ´úµÄ²âÊÔ¼¼ÊõÓë×î¼Ñʵ¼ù