±à¼ÍƼö: |
±¾ÎĽ²½âÁË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ÒѾÅÜÆðÀ´ÁË¡£
|