初识Concordion与入门

BDD工具--Concordion实战 BDD工具–Concordion实战 ​ Concordion是一种行为驱动开发的工具。设计阶段,由需求测试开发共同完成文档的编写,开发阶段开发实现需求文档代码化。Concordion官网为https://concordion.org/。官网中官网没有给出具体的与Spring结合的例子,本篇文章重点从开发角度介绍一下Concordion与spring bootj结合实现代码化的实例。 1、添加pom依赖 在spring Boot 项目中引入Concordion:依赖 <dependency> 阅读详情
摘要: 第一个测试很容易理解greetingFor函数接受一个字符串并返回,通过concordion:set设置firstName为World,...

初识Concordion与入门

问题域?

测试及文档,Specification By Example 应该怎么做,怎样提高测试的效率。

什么是Concordion ?

Concordion是一种自动化测试框架,是测试及文档,Specification By Example的一种实现,可以用自然的语言来描述软件功能,能很好的描述用户的Story。它不仅支持Java,也同样支持.NET, Python, Scala, and Ruby. 是JUnit的扩展,写好的测试不仅是格式良好的测试文档,同样也可以当成JUnit单元测试来跑。

如何使用 ?

Concordiong很简单,我们可以直接看看官方的例子。

1. 安装

下载例子concordion-kickstart, 例子使用Gradle构建工具管理的,比maven简单,这里就不详细介绍它的使用方式了。

Greeter.java 需要测试的类。

specs 验收测试归类文件夹。

concordion.css 级联样式表让测试展现更好看一点。

HelloWordTest.java JUnit测试类,集成至ConcordionTestCase

HelloWord.html Concordion测试文档,名字必须与测试类保持一致。

环境要求Jdk1.5以上,依赖一下jar包:

concordion-1.4.2.jar

junit-3.8.2.jar or junit-4.8.2.jar

ognl-2.6.9.jar

xom-1.2.5.jar

2. 导入项目到IDE中,Eclipse或者IntelliJ IDEA

使用Gradle很方便导入,在gradle的构建脚本build.gradle最前面加上或者intellij插件即可,如下:

然后在命令行运行 gradle eclipse或者gradle idea,然后通过IDE导入就可以了。

3. Concordion测试

Concordion测试文档需要遵循一些固定的格式,它必须是一个格式良好的XHTML文档,所以必须包含

concordion:assertEquals用来断言结果的正确性。

concordion:set设置变量值。

concordion:execute执行测试类方法。

看第一个简单的例子:

JUnit测试类:

package com.example.specs.greeting;

import org.concordion.integration.junit3.ConcordionTestCase;

import com.example.Greeter;

public class HelloWorldTest extends ConcordionTestCase {

public String greetingFor(String firstName) {

return new Greeter().greetingFor(firstName);

}

public void setCurrentTime(String time) {

// TODO

}

}

测试文档:

Hello World!

After a user logs into the system, a greeting is

displayed saying "Hello [user's first name]!"

Example

When user World

logs in, the greeting will be:

Hello World!

If time is

09:00AM

第一个测试很容易理解greetingFor函数接受一个字符串并返回,通过concordion:set设置firstName为World,用concordion:assertEquals判断最后结果是否是Hello World.输出界面为:

第二个例子:测试函数返回值

package com.example.specs.greeting;

import org.concordion.integration.junit3.ConcordionTestCase;

public class SplittingNamesTest extends ConcordionTestCase{

public Result split(String fullName){

String[] words = fullName.split(" ");

Result result = new Result(words[0], words[1]);

return result;

}

class Result {

private final String firstName;

private final String lastName;

Result(String firstName, String lastName) {

this.firstName = firstName;

this.lastName = lastName;

}

public String getFirstName(){

return firstName;

}

public String getLastName(){

return lastName;

}

}

}

Splitting Names

To help personalise our mailshots we want to have the first name

and last name of the customer. Unfortunately the customer data

that we are supplied only contains full names.

The system therefore attempts to break a supplied full name into

its constituents by splitting around whitespace.

Example

Full NameFirst NameLast Name
John SmithJohnSmith
David PetersonDavidPeterson

使用concordion:execute调用函数split,返回结果保存在result变量里面,Concordion会自动把它映射为Result对象。

第三个例子:测试数据集package com.example.specs.greeting;

import org.concordion.integration.junit3.ConcordionTestCase;

import java.util.*;

public class PartialMatchesTest extends ConcordionTestCase {

private Set usernamesInSystem = new HashSet();

public void setUpUser(String username){

usernamesInSystem.add(username);

}

public Iterable getSearchResultsFor(String searchString){

SortedSet matches = new TreeSet();

for(String username : usernamesInSystem){

if(username.contains(searchString)){

matches.add(username);

}

}

return matches;

}

}

Partial Matches

Username searches return partial matches, i.e. all usernames containing

the search string are returned.

Example

Given these users:

Username
john.lennon
ringo.starr
george.harrison
paul.mccartney

Searching for "arr" will return:

Matching Usernames
george.harrison
ringo.starr

使用concordion:verifyRows来接受结果集,并判断结果集中的数据,相当简单一看就懂。

结束语

通过上面的例子看Concordion还是比较简单的,它鼓励把测试写成类似用户Story描述那样,让项目中的每个人都能看懂测的具体是什么场景包括BA或者其他不懂技术的人。它是JUnit的扩展,能像JUnit测试一样自动话执行和生成结果。比起其他的BDD工具JBehave, Cucumber有些区别的就是它并不使用Given When Then的格式,它提倡自然语言Specification By Example的方式来描述测试用例。

concordion 项目 concordion 官方源码,可以体验测试的全过程 立即下载

相关推荐

concordion:Concordion是Java的开源框架,使您可以将需求的纯英文描述转换为自动化测试。 Concordion是创建高质量生活文档的最灵活的工具。 它通常与示例规范(SbE)和行为驱动开发(BDD)流程一起使用

是Java的开源框架,使您可以将需求的纯英文描述转换为自动化测试。 用户应访问网站,以获取有关如何下载和使用Concordion的详细信息。 本自述文件涵盖了希望使用Concordion源代码的人们的信息。 目标Java版本 Concordion当前针对Java 6。 建筑协和 Concordion使用作为构建工具。 代码库包括Gradle包装器,它将自动下载正确版本的Gradle。 在命令行中,运行gradlew tasks以显示可用任务。 注意:如果当前目录不在路径中,则在基于Unix的系统上需要使用./gradlew tasks ,在Windows上需要使用.\gradlew tasks 。 编译和运行测试 从命令行运行以下命令: gradlew clean test 这将下载所需的依赖项,清理现有项目,重新编译所有源代码并运行所有测试。 Concordion输出被写入.

OctoPrint-MQTT 插件使用教程

OctoPrint-MQTT 插件使用教程 1. 项目介绍 OctoPrint-MQTT 是一个为 OctoPrint 设计的插件,旨在通过 MQTT 协议增强 OctoPrint 的功能。该插件允许 OctoPrint 与 MQTT 代理进行通信,从而实现远程监控和控制打印机。通过该插件,用户可以接收打印机状态、温度、打印进度等实时信息,并可以通过 MQTT 发布命令来控制打印机。 2. 项目快...

gitblog_00001的博客 598

concordion maven 样例

concordion, maven ,样例,通过maven构建

powermock、hadoop、Concordion、Java 8教程

大牛教程走一波,有兴趣的可以加群286081824 : powermock实战教学 https://www.douban.com/note/590646042/ hadoop平台下的数据导入导出工具Sqoop https://www.douban.com/note/590646264/ Concordion实战教学 https://www.douban.com/note/59064654

十六子 1359

软件测试实战项目(Web项目)

内容展示https://blog.youkuaiyun.com/weixin_43468923/article/details/112177100,选择性下载,仅供学习交流参考,请勿用作商务用途,若发现用作商用,保留平台申诉和法律维权的权利。

网工最容易搞混的三个概念:防火墙、网闸、堡垒机,一文让你轻松搞明白。

网闸的作用可以简单概括为:在两个或多个不同安全级别的网络(如内网和外网、普通网与高安全网、受限网与互联网)之间建立一个严格隔离、信息流转的安全桥梁。它的核心任务是实现数据安全传输与隔离,避免网络之间的直接连接带来的安全隐患。数据传输安全:网闸保证数据从一个网络到另一个网络时,能够进行审查、过滤和转换,防止恶意数据或非法信息被传入内部网络或外部泄露。高安全性隔离:网闸常常用于企业的内外网隔离、军事网络、政府机关等对数据隔离要求极高的环境。

HWP18612324139的博客 3636

Concordion实战教学

1.Concodrion入门介绍 2.Concordion环境搭建 3.Concordion快速入门 4.Concordion断言Assert详细介绍 5.Concordion命令介绍 6.Concordion Execute详细介绍的好 7.Concordion return value介绍 8.Concordion return MultiValueResult 介绍

清心寡欲,做一个专注的程序员 1191

CentOS 7下kkFileView 4.4.0离线部署全攻略(含LibreOffice 7.5配置避坑指南)

本文详细介绍了在CentOS 7环境下离线部署kkFileView 4.4.0的全流程,包括LibreOffice 7.5的配置避坑指南、中文字体解决方案以及企业级运维实践。通过本指南,用户可以在内网环境中快速搭建稳定可靠的文档在线预览服务,提升办公效率。

weixin_28481133的博客 288

Concordion

原来Concordion是用来做UAT的。

sjd159的博客 193

微机原理-基于8086电压报警2.5V仿真系统设计

*单片机设计介绍,微机原理-基于8086电压报警2.5V仿真系统设计。

2201_75940997的博客 1083

利用SPSS实现逻辑回归,树模型,以及广义线性模型

本案例是IBM SPSS数据分析与挖掘实战案例精粹----第九章的学习记录 案例背景:分析出导致急救后迟发性颅脑损伤的主要影响因素,共有201项案例: 分析思路:先使用logistic回归模型进行影响因素筛选,然后利用分类树探索自变量中是否存在交互作用,最后利用广义线性模型过程拟合带交互项的Logistic回归模型 字段:性别,年龄,收缩压,舒张压,血小板,脑挫伤,中线位移,脑肿胀,入院意识,是否手术急救,其余急救措施,是否出现迟发性脑损伤; ...

hepan_defeng的博客 1万+

Your First Concordion.NET Project (Part 1)-What is Concordion.Net?

http://living-in-concordion.blogspot.com/2009/05/your-first-concordionnet-project-part-1.html What is Concordion.Net? 恩,你在Internet上偶然看见了Concordion或者Concordion.net的话,可能会比较喜欢采用Concordion编写的Specficatio...

weixin_30436891的博客 106

让 AI 变聪明的 20 条指令:如何让大模型回答得更精准、更专业、更实事求是

让 AI 变聪明,本质上不是写几句神奇咒语,而是把你的任务表达得更清楚,把事实标准设得更严格,把输出格式规定得更明确,把不确定性管理得更认真,把历史对话利用得更充分。大模型的强项是语言生成、信息组织、模式归纳和方案扩展;弱项是事实核验、实时更新、责任判断和对模糊意图的准确猜测。好的指令,就是在用人的判断弥补模型的弱点,让模型把强项发挥在正确的地方。

Sumarua的博客 1486

测试即文档:自动化测试框架Concordion

  如果你是那种极不情愿写文档的程序员,那么,你并不孤单。然而当你的上司在检查你的工作时,他才不想看你那一堆一堆的代码,他需要看文档,这时的你需要的是Concordion——一个符合Specification By Example的自动化测试框架,通过自然语言来描述软件功能,即项目中所有成员都能看懂的而又具备测试功能的html文档。 (一)Concordion的工作原理   简单的说,C...

weixin_30468137的博客 94

esxi8.0.3如何添加USB外置硬盘

本文介绍了在ESXi系统中配置外置USB硬盘作为数据存储的完整步骤:1)通过SSH禁用USB仲裁服务并关闭自启;2)识别已连接的USB硬盘设备路径;3)使用partedUtil创建GPT分区表并计算扇区范围;4)设置VMFS6分区并格式化。关键命令包括停止usbarbitrator服务、partedUtil分区操作以及vmkfstools格式化命令。整个过程需通过SSH执行,最终将USB硬盘配置为名为"USB_Datastore"的VMFS6存储设备。

qq_41683719的博客 1545

【异常】OpenClaw 项目 `fetch failed` 报错问题排查与解决方案Response interrupted: TypeError: fetch failed

针对无超时控制、异常兜底缺失导致的请求中断,封装标准化的安全请求工具,一次性解决超时控制、异常捕获、日志埋点三大问题,全项目替换原生。:将项目运行的 Node.js 版本升级至 18.x 及以上 LTS 版本,使用 Node.js 内置的稳定版。实现的网络请求环节,包括但不限于:第三方开放接口调用、内部服务接口通信、跨域资源请求、外部配置拉取等场景。:针对无法升级 Node.js 版本的存量环境,通过社区稳定兼容包替换原生。类型异常,直接造成业务请求响应中断。第二步:业务代码改造,替换原生。

奶爸的编程之路,也就一周冷个三天 367

Can you outline a story-driven process with Concordion?

Concordion 官方网站上提到了一个关于Story – Driven的流程图,感觉挺不错。From:http://www.concordion.org/Questions.html 其实这两天看Concordion以及By Example, 感觉比较头疼的还是在Story的可维护性上。 Concordion想在领域之外通过一套DSL来建立对Story的简单测试,或者示例,而这个...

weixin_30852367的博客 88

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Concordion test

reference documents http://concordion.org/Example.html 转载于:https://www.cnblogs.com/guoapeng/p/4947327.html

weixin_30299709的博客 94

Your First Concordion.Net Project (Part 3)-Adding Specifications

http://living-in-concordion.blogspot.com/2009/05/your-first-concordionnet-project-part-3.html 同任何TDD或者BDD类似的,我们应该首先编写我们的Test或者Specifications。 首先,我们搭建一下我们的Specification 程序集。 Calculator.Spec. Style S...

weixin_30287169的博客 110
上一篇: 安卓txt电子书阅读器源码
下一篇: Eclipse 安装Maven插件
stonenotes123
博客等级 码龄15年 30粉丝 176原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值