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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Cucumber¿ò¼ÜÈëÃÅÆª
 
  8437  次浏览      27
 2019-3-25
 

 

±à¼­ÍƼö:

±¾ÎÄÀ´×ÔÓÚcsdn£¬±¾ÎÄÖ÷Òª½éÉÜÈçºÎ´î½¨Cucumber¿ò¼Ü£¬ÒÔ¼°Cucumber¸÷ÎļþµÄ×÷Ó㬺Ϳò¼ÜµÄÐ޸ģ¬Ï£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú¡£

Cucumber½éÉÜ

CucumberÊÇÒ»¸öÖ§³ÖBDD£¨Behavior Driven Development£©,¼´ÐÐΪÇý¶¯¿ª·¢µÄ×Ô¶¯»¯²âÊÔ¿ò¼Ü¡£ÔÚ½øÐе¥Ôª²âÊÔ»òÕß¼¯³É²âÊÔ֮ǰ£¬ÊÂÏȽ«²âÊԵIJ½ÖèºÍÑéÖ¤ÐÅÏ¢ÓÃͨÓõÄÓïÑÔ£¨Ó¢Ó¶¨ÒåºÃ£¬Ê¹µÃ²âÊԵIJ½Öè¡¢µ¥Ôª²âÊԺͼ¯³É²âÊÔÿһ²½Ö´ÐеÄÄ¿µÄÄܱ»·Ç¿ª·¢ÈËÔ±¶Á¶®£¬²¢ÇÒдµ¥Ôª²âÊԺͼ¯³É²âÊÔµÄÈËÔ±¿ÉÒÔÒÀ¾ÝÊÂÏÈдºÃµÄ¿ò¼Ü½øÐдúÂëµÄ±àд£¬´ïµ½ÐÐΪÇý¶¯¿ª·¢µÄÄ¿µÄ¡£

Cucumber¿ò¼ÜµÄ´î½¨

1. ½«Cucumber²å¼þµ¼ÈëeclipseÖУ¬´Ë´¦Í¬ÆäËû²å¼þµ¼Èë·½·¨Ïàͬ£¬²»×÷˵Ã÷¡£

2. н¨Java¹¤³Ì£¬½«CucumberËùÐèÒªµÄjar°üµ¼ÈëJava¹¤³ÌÖУ¨×îºÃн¨Ò»¸öÎļþ¼Ð£¬½«jar°ü·Åµ½¸ÃÎļþ¼ÐÏ£©¡£

3.ͨ¹ýBuild PathÌí¼Ó¸Õµ¼ÈëµÄJARs

4. н¨ÓÃÀ´¶¨Òå²½ÖèµÄfeature¸ñʽµÄÎļþ£¬Ð½¨µÄfeature¸ñʽÎļþ»á×Ô¶¯Ìîдģ°åÎļþ£¬¾ßÌåʹÓ÷½·¨ºóÐøËµÃ÷¡£Í¬ÉÏ£¬×îºÃ½«Æä·ÅÔÚÌØ¶¨µÄÎļþ¼ÐÀ±¾ÀýΪFeatureÎļþ¼Ð¡£

5. ½«±»²âÊԵİüµ¼ÈëJava¹¤³ÌÖУ¬±¾Àý²âÊÔÒ»¸ö¼òµ¥µÄCalculatorÀà¡£

6. н¨Ò»¸ö°ü£¬°üÃû±ØÐëΪtest.java»òmain.java·ñÔòºóÐø´´½¨Cucumber¶¨Òå²½Öèʱ»á³ö´í¡£

7. ÔÚtest.java°üÖÐн¨Ò»¸öStep-Definition class¡£

Cucumber¿ò¼ÜÏà¹ØÎļþ¼°ÆäÄÚÈݵÄ˵Ã÷

1. .featureÎļþ

¶¨ÒåÁ˲âÊԵIJ½Ö裬°üÀ¨ÒÔϼ¸¸ö¹Ø¼ü×Ö

Feature£ºÒ»¸ö.featureÎļþÓÐÇÒ½öÓÐÒ»¸öFeature¹Ø¼ü×Ö¡£ÃèÊöÒª²âÊԵĶÔÏó£¬Ò»°ãΪ²âÊÔ±êÌâ¡£

Scenario£ºÒ»¸ö.featureÎļþ¿ÉÒÔÓÐ0¸ö»ò¶à¸öScenario¹Ø¼ü×Ö¡£²âÊÔ¶ÔÏóµÄ³¡¾°£¬Èç²âÊÔAdd( )·½·¨£¬¿ÉÒÔÓÐÁ½¸öÕûÊýÏà¼ÓºÍÁ½¸ö¸ºÊýÏà¼ÓµÈ¶àÖÖ³¡¾°¡£

Given£ºÒ»¸ö.featureÎļþÓÐÇÒ½öÓÐÒ»¸öGiven¹Ø¼ü×Ö¡£Ï൱ÓÚ²âÊÔÓÃÀýÖеÄÔ¤ÖÃÌõ¼þ¡£ÈçÏëÒª±í´ï¶à¸öÔ¤ÖÃÌõ¼þ£¬¿ÉÒÔͨ¹ýAnd¹Ø¼ü×ÖÌí¼Ó¡£

When£ºÒ»¸ö.featureÎļþÓÐÇÒ½öÓÐÒ»¸öWhen¹Ø¼ü×Ö¡£¾ßÌåµÄ²Ù×÷²½Ö裬ÀàËÆÓÚ²âÊÔÓÃÀýÖеIJÙ×÷²½Öè¡£ÈçÏëÒª±í´ï¶à¸ö²Ù×÷²½Ö裬¿ÉÒÔͨ¹ýAnd¹Ø¼ü×ÖÌí¼Ó¡£

Then£ºÒ»¸ö.featureÎļþÓÐÇÒ½öÓÐÒ»¸öThen¹Ø¼ü×Ö¡£Ï൱ÓÚ²âÊÔÓÃÀýµÄÖеÄÔ¤ÆÚ½á¹û¡£ÈçÏëÒª±í´ï¶à¸öÔ¤ÆÚ½á¹û£¬¿ÉÒÔͨ¹ýAnd¹Ø¼ü×ÖÌí¼Ó¡£

And£ºÒ»¸ö.featureÎļþ¿ÉÒÔÓÐ0¸ö»ò¶à¸öAnd¹Ø¼ü×Ö¡£AndÔªËØ¿ÉÒÔ²¹³ä¶îÍâµÄÔ¤ÖÃÌõ¼þ»ò²Ù×÷²½Öè¡£

But£ºÒ»¸ö.featureÎļþ¿ÉÒÔÓÐ0¸ö»ò¶à¸öBut¹Ø¼ü×Ö¡£ButºÍAndÒ»Ñù£¬¿ÉÒÔͬGiven¡¢When¡¢ThenÁ¬Óã¬ÓÃÓÚÌí¼Ó·ñ¶¨ÀàÐ͵ÄÃèÊö£¬Ò»°ãÖ»ÊÊÓÃÓÚ¸ºÃæÌõ¼þ¡£±ÈÈ磺

THEN login should be successful.

BUT home page should not be missing

Scenario Outline£ºÒ»¸ö.featureÎļþ¿ÉÒÔÓÐ0¸ö»ò¶à¸öScenario Outline¹Ø¼ü×Ö¡£ÓÃÓÚ³¡¾°ÖÐÓжà×éÊýֵʱ£¬±ØÐëÅäºÏExampleÒ»ÆðʹÓ㬳ɶԳöÏÖ¡£

Examples£ººÍScenario Outline³É¶Ô³öÏÖ£¬ÆäÏÂÓжà×é²âÊÔÊýÖµµÄÁбí2. Step-definitionÎļþ

CucumberµÄStep-definitionºÍÆäËûµÄjava¸ñʽÎļþ»ù±¾Ïàͬ£¬µ«ÊÇÔÚ´´½¨Ê±¿ÉÒÔ¸ù¾ÝÐèҪѡÔñÐÔ¹´Ñ¡²¢×Ô¶¯Ìí¼ÓGive¡¢When¡¢Then¡¢And¡¢But×¢ÊÍ¡£

Íê³Éºó»á×Ô¶¯Éú³ÉÒ»¸öjavaÄ£°åÎļþ£¬°üÀ¨ÁË֮ǰ¹´Ñ¡µÄ×¢ÊÍ£¬±¾Àý¹´Ñ¡ÁËGiven¡¢When¡¢ThenºÍAnd¡£×¢Ê͵ĸñʽΪ£º

@¹Ø¼ü×Ö("^******$")

@Given("^you are in Given annotation$")

¹Ø¼ü×ÖºóÀ¨ºÅÀïµÄÄÚÈݱØÐëºÍÏÈǰ¶¨ÒåµÄ.featureÎļþµÄ¹Ø¼ü×ÖµÄÄÚÈÝÒ»Ò»¶ÔÓ¦£¬Ê¶±ð´óСд²¢ÇÒ°üÀ¨¿Õ¸ñÊýÄ¿µÈ¶¼ÒªÒ»Ñù£¬ÒÔ^¿ªÍ·£¬$½áβ¡£×¢ÊÍÖ®ºóΪ¾ßÌåʵÏֵķ½·¨£¬ÔÚ·½·¨ÖÐÌí¼Ó·ûºÏ¹Ø¼ü×ÖºóÃèÊöµÄ²Ù×÷µÄ´úÂë¡£

3. ²âÊÔÖ´ÐÐÎļþ

CucumberµÄ²âÊÔÖ´ÐÐÎļþÒ»°ãΪһ¸ö¿ÕµÄJunit Test Case£¬¼´²»ÐèÒªTest×¢ÊÍ£¬¸ü²»ÐèÒªBeforeºÍAfterµÈ×¢ÊÍ¡£µ±±ØÐëÌí¼ÓRunWith×¢ÊͺÍCucumberOptions×¢ÊÍ¡£

RunWith×¢ÊÍÿһ¸öCucumber¿ò¼ÜµÄ²âÊÔÎļþ¶¼ÊÇÏàͬµÄ£¬ÎªRunWith(Cucumber.class)¡£CucumberOption×¢Ê͵ÄÄÚÈÝÊǸù¾Ýʵ¼ÊÇé¿öÐèÒªÊÖ¶¯¸ü¸ÄµÄ¡£

CucumberOptions×¢ÊÍÑ¡ÏîÒ»°ãÓÐfeatures¡¢glue¡¢monochromeºÍdryrunµÈ¡£ÆäÖС£featuresºÍglueÊDZØÐ´ÏmonochromeºÍdryrunÑ¡ÌîÏî¡£

features¶¨ÒåÁË.featureÎļþµÄÏà¶Ô·¾¶£¬¸ñʽΪfeatures=¡°.featureÎļþÔڸù¤³ÌµÄÎļþ¼Ð/.featureÎļþµÄÃû×Ö¡±¡£eg. features="Feature/calculatorAdd.feature"

glue¶¨ÒåÁËStep-difinitionµÄ°üÃû£¬¸ñʽΪglue=¡±ÍêÕûµÄ°üÃû¡±¡£eg. test.java.cucumberDefinition¡£

monochromeÑ¡ÏîÓÐÁ½¸öÖµ£¬·Ö±ðΪtrueºÍfalse£¬Ä¬ÈÏΪfalse£¬¸ñʽΪmonochrome=boolean¡£ÓÃÀ´¿ØÖƲâÊÔ½á¹ûµÄ¿É¶ÁÐÔ£¬µ±monochrome=trueʱ£¬²âÊÔ½á¹û¿É¶ÁÐÔ¸üºÃ¡£monochrome=trueʱ£¬²âÊÔ½á¹û¿É¶ÁÐԱȽϲ

dryrunÑ¡ÏîÔÝʱ²»Á˽⡣

Cucumber¿ò¼ÜµÄʹÓÃ

ͨ¹ýÒÔÉϽéÉÜ£¬Cucumber¿ò¼Ü»ù±¾´î½¨Íê³É£¬¶ÔCucumber¸÷ÎļþµÄ×÷ÓÃÒ²ÓÐËùÁ˽⣬½ÓÏÂÀ´¾ÍÊÇͨ¹ý¶Ô¿ò¼ÜµÄÐÞ¸ÄÀ´ÊµÏÖÒ»¸ö¼òµ¥µÄBDDģʽµÄµ¥Ôª²âÊÔ¡£

²âÊÔCalcualtorÀàÖеÄAdd( )³ÉÔ±·½·¨

1. н¨testAdd.featureÎļþ£¬²¢ÐÞ¸ÄÆäÄÚÈÝ

@tag
Feature: Test add function of calculator
@tag1
Scenario: Add two numbers
Given init the object of calculator
When clear the result to zero
And add num1 and num2
Then check the actual result

2. н¨stepDefinition.javaÎļþ£¬Ê¹ÓÃGiven¡¢When¡¢ThenºÍAnd¹Ø¼ü×Ö£¬ÐÞ¸Ä×¢ÊÍÄÚÈݲ¢¸ù¾Ý×¢ÊÍÄÚÈÝÌîд·½·¨ÖеĴúÂë¡£

package test.java.cucumberDefinition;

import cucumber.api.java.en.Given;
import cucumber.api.java.en.When;
import cucumber.api.java.en.Then;

import static org.junit.Assert.assertEquals;

import com.calculator.Calculator;

import cucumber.api.java.en.And;

public class stepDefinition {
Calculator cal;
int result;
@Given("^init the object of calculator$")
public void given() throws Throwable {
cal= new Calculator();
}

@When("^clear the result to zero$")
public void when() throws Throwable {
cal.clear();
}

@Then("^add num1 and num2$")
public void then() throws Throwable {
cal.add(2);
cal.add(3);
}

@And("^check the actual result$")
public void and() throws Throwable {
int expected = 5;
result = cal.getResult();
assertEquals(expected,result);
}

}

3. н¨Ò»¸öJunit Test Case£¬²¢½«ÆäÄÚÈÝÇå¿Õ£¬×îºóÌí¼ÓRunWithºÍCucumberOptions×¢ÊÍ¡£


package com.calculator.test;

import static org.junit.Assert.*;

import org.junit.Test;
import org.junit.runner.RunWith;

import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;

@RunWith(Cucumber.class)
@CucumberOptions(features="Feature/calculatorAdd.feature"

,glue="test.java.cucumberDefinition",monochrome=true)
public class testAdd {

}

4. ÓÒ¼ütestAdd.java£¬Ö´ÐÐrun as junit case½øÐвâÊÔ¡£

 

 

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

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

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

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