如何在Eciipse建立cucumber项目

简介: 如何在Eciipse建立cucumber项目

1 修改%MVN_HOME%\conf\settings.xml

找到<mirror>处,加入:

代码语言:javascript

复制

<mirror>
<id>alimaven</id>
<name>aliyun
maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>

2 在工作目录运行

代码语言:javascript

复制

>mvn archetype:generate "-DarchetypeGroupId=io.cucumber" "-DarchetypeArtifactId=cucumber-archetype" "-DarchetypeVersion=4.2.6.1" "-DgroupId=hellocucumber" "-DartifactId=hellocucumber" "-Dpackage=hellocucumber"   "-Dversion=1.0.0-SNAPSHOT"   "-DinteractiveMode=false" "-DarchetypeCatalog=local"

形成hellocucumber项目。

3  打开Eclipse,“帮助-eclipse市场”,安装cucumber

4 修改pom.xml

代码语言:javascript

复制

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>hellocucumber</groupId>
<artifactId>hellocucumber</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>jar</packaging>
<properties>
<cucumber.version>4.2.6</cucumber.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java</artifactId>
<version>${cucumber.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-junit</artifactId>
<version>${cucumber.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<encoding>UTF-8</encoding>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>

5  书写feature文件。test.feature

代码语言:javascript

复制

#language:zh-CN
功能:
  作为一名银行客户
  我想要拥有一个账户
  以便我可以存钱、取钱,并且显示当前余额
场景:我没有账户
  假设我没有账户
  当我新建账户的时候
  那么我的账户余额为0.00元    
场景:我已经有了账户
  假设我的账户初始余额为0.00元
  当我存入100.00元后
  那么我的账户余额为100.00元
  假设我的账户初始余额为100.00元
  当我存入200.00元后
  那么我的账户余额为300.00元
  假设我的账户初始余额为400.00元
  当我取出300.00元后
  那么我的账户余额为100.00元

#language:zh-CN 表示用中文写

6 根据test.feature写步骤文件Stepdefs.java

代码语言:javascript

复制

package hellocucumber;
import cucumber.api.java.zh_cn.*;
import static org.junit.Assert.*;
public class Stepdefs {
private Account account;
       @假如("我没有账户")
public void 我没有账户() {
this.account = null;    
       }
       @当("我新建账户的时候")
public void 我新建账户的时候() {
this.account = new Account();
       }
       @那么("我的账户余额为{double}元")
public void 我的账户余额为(Double value) {
              assertEquals(value, this.account.getBalance());
       }
       @假设("我的账户初始余额为{double}元")
public void 我的账户初始余额为_元(Double value) {
this.account = new Account();
this.account.deposit(value);
       }
       @当("我存入{double}元后")
public void 我存入_元后(Double value) {
this.account.deposit(value);
       }
       @当("我取出{double}元后")
public void 我取出_元后(Double value) {
this.account.withdraw(value);    
       }
}

注意,空格都必须一致

7 修改RunCucumberTest.java文件

代码语言:javascript

复制

package hellocucumber;
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
import org.junit.runner.RunWith;
@RunWith(Cucumber.class)
@CucumberOptions(features = "src/test/java/hellocucumber/test.feature",plugin = {"pretty"})
public class RunCucumberTest {
}

features = "src/test/java/hellocucumber/test.feature"指明feature文件位置

8 修改产品代码

代码语言:javascript

复制

package hellocucumber;
public class Account {
private Double balance = 0.0;
public Double getBalance(){
return this.balance;
       }    
public Double deposit(Double value) {
return this.balance+=value;
       }
public Double withdraw(Double value) {
return this.balance-=value;
       }
}

9 运行

代码语言:javascript

复制

[INFO] Scanning for projects...
[INFO] 
[INFO] --------------------< hellocucumber:hellocucumber >---------------------
[INFO] Building hellocucumber 1.0.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ hellocucumber ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] 
[INFO] --- maven-compiler-plugin:3.7.0:compile (default-compile) @ hellocucumber ---    
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ hellocucumber ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] 
[INFO] --- maven-compiler-plugin:3.7.0:testCompile (default-testCompile) @ hellocucumber ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ hellocucumber ---
[INFO] Surefire report directory: C:\Code\MyJava\JUnit\hellocucumber\target\surefire-reports
-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running hellocucumber.RunCucumberTest
功能: 
  作为一名银行客户    
  我想要拥有一个账户
  以便我可以存钱、取钱,并且显示当前余额
  场景: 我没有账户        # src/test/java/hellocucumber/test.feature:7
    假设我没有账户        # Stepdefs.我没有账户()
    当我新建账户的时候      # Stepdefs.我新建账户的时候()
    那么我的账户余额为0.00元 # Stepdefs.我的账户余额为(Double)
  场景: 我已经有了账户          # src/test/java/hellocucumber/test.feature:12
    假设我的账户初始余额为0.00元   # Stepdefs.我的账户初始余额为_元(Double)
    当我存入100.00元后       # Stepdefs.我存入_元后(Double)
    那么我的账户余额为100.00元   # Stepdefs.我的账户余额为(Double)
    假设我的账户初始余额为100.00元 # Stepdefs.我的账户初始余额为_元(Double)
    当我存入200.00元后       # Stepdefs.我存入_元后(Double)
    那么我的账户余额为300.00元   # Stepdefs.我的账户余额为(Double)
    假设我的账户初始余额为400.00元 # Stepdefs.我的账户初始余额为_元(Double)
    当我取出300.00元后       # Stepdefs.我取出_元后(Double)
    那么我的账户余额为100.00元   # Stepdefs.我的账户余额为(Double)
2 Scenarios (2 passed)
12 Steps (12 passed)
0m0.100s    
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.237 sec
Results :
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  1.700 s
[INFO] Finished at: 2024-02-01T17:13:15+08:00
[INFO] ------------------------------------------------------------------------
目录
相关文章
|
27天前
|
JSON JavaScript 前端开发
如何在python下建立cucumber项目
Gherkin语言使用的是主要英文关键词Scenario、Given、when 、And、Then和But等,这些关键词可以转换成中文关键词,场景、假如、当、那么等。根据用户故事,需求人员或测试人员使用Gherkin语言编写好测试场景的每个步骤。
17 0
|
5月前
Tars测试工程创建
Tars测试工程创建
|
缓存 安全 Go
Go 开发常用操作技巧--模块管理
Go 依赖管理经历了 3 个阶段,GOPATH、Go Vendor、Go Module。
123 0
Go 开发常用操作技巧--模块管理
|
Python 应用服务中间件 nginx
初学Python——软件目录结构规范
为什么要设计好目录结构? 可读性高: 不熟悉这个项目的代码的人,一眼就能看懂目录结构,知道程序启动脚本是哪个,测试目录在哪儿,配置文件在哪儿等等。从而非常快速的了解这个项目。 可维护性高: 定义好组织规则后,维护者就能很明确地知道,新增的哪个文件和代码应该放在什么目录之下。
4090 0
|
Ruby
《Cucumber:行为驱动开发指南》——2.3 创建步骤定义
现在在fetures/step_definitions目录下创建一个名为calculator_steps.rb的文件,只要这是一个Ruby文件,Cucumber并不介意你给这个文件起什么名字,但这里我们给这个文件起的名字其实不错。
2381 0
|
C语言 C++
Qt6-CMake项目体验、建立项目、包含模块
由于公司一个项目中存在多台电脑,没戏项目下线关闭电脑是需要一个一个关机,很是麻烦,因此编写一个局域网中批量关闭电脑的工具时很有必要的。
849 0
Qt6-CMake项目体验、建立项目、包含模块
|
算法 iOS开发 开发者
Objective-C 项目重构利器:把项目中的导入依赖(Import Dependancies)图示化
作为开发者,我们都喜欢干净的代码,但实际上我们大部分时间都是和糟糕的代码打交道。这些代码可能是最近写的,也可能是遗留下来的,可能是我们自己写的,可能是其他开发者写的。我们能认出什么是糟糕的代码,因为我们有代码的嗅觉(code smells)。换句话说,关于代码质量的启发式提问。在这些中,我们可以命名我写在这里和这里的"死亡"的代码(dead code),也可以命名紧密耦合(tight coupling)。
165 0
Objective-C 项目重构利器:把项目中的导入依赖(Import Dependancies)图示化
|
Web App开发 机器学习/深度学习 数据格式