[每日一学]apache camel|BDD方式开发apache camel|Groovy|Spock

开发apache camel应用,最好的方式就是tdd,因为camel的每个组件都是相互独立并可测试的。

现在有很多好的测试框架,用groovy的Spock框架的BDD(行为测试驱动)是比较优秀和好用的。

首先, 我们从最简单的processor开始。

先写测试用例:

package com.github.eric.camel

import org.apache.camel.Exchange
import org.apache.camel.impl.DefaultCamelContext
import org.apache.camel.impl.DefaultExchange
import spock.lang.Specification

/**
* Created by eric567 on 4/2/2016.
*/
class MyProcessorTest extends Specification {
def "Process"() {
given: "new MyProcessor,new Exchange of not null body "
def DefaultCamelContext contex=DefaultCamelContext.newInstance();
def Exchange exchange= DefaultExchange.newInstance(contex)

exchange.getIn().setBody("test");
def MyProcessor myProcessor=new MyProcessor()
when:"the body of exchange.in() is not null"

then:"set the body to exchange.out()"

def Exchange ex=myProcessor.doProcess(exchange)
ex.getIn().getBody(String.class)!=null
ex.getIn().getBody(String.class).equals("test")

}
}

以下是被测试的代码 :

package com.github.eric.camel;

import org.apache.camel.Exchange;import org.apache.camel.Processor;

/** * Created by eric567 on 4/2/2016. */public class MyProcessor implements Processor {    @Override    public void process(Exchange exchange) throws Exception {        String in = exchange.getIn(String.class);        if(in!=null)    {        exchange.getOut().setBody(in);    }    }

    public Exchange doProcess(Exchange exchange) throws Exception {        process(exchange);        return exchange;    }}

因为Processor本身没有返回值,这里加了一个方法:doProcess用来返回exchange 对象,使 MyProcessor变得更好测试。运行上面的spock测试用例,应该可以看到令人激动的绿色。cheers!!!
时间: 2024-08-28 07:31:34

[每日一学]apache camel|BDD方式开发apache camel|Groovy|Spock的相关文章

[编译原理]用BDD方式开发lisp解释器(编译器)|开发语言java|Groovy|Spock

lisp是一门简单又强大的语言,其语法极其简单: (+ 1 2 ) 上面的意思 是:+是方法或函数,1 ,2 是参数,fn=1+2,即对1,2进行相加求值,结果是:3 双括号用来提醒解释器开始和结束. 之前在iteye写过一篇文章来简单介绍怎么写lisp的解释器: http://gyc567.iteye.com/blog/2242960 同时也画了一张草图来说明: 因为lexer(词法分析器)主要工作就是把程序的字符串表达式转化为tokens.(Pair),以下是百科对词法分析的说明: 词法分析

从零开始学JAVA(09)-使用SpringMVC4 + Mybatis + MySql 例子(注解方式开发)

项目需要,继续学习springmvc,这里加入Mybatis对数据库的访问,并写下一个简单的例子便于以后学习,希望对看的人有帮助.上一篇被移出博客主页,这一篇努力排版整齐,更原创,希望不要再被移出主页了. 原创文章,后面附上源码,转载请注明出处http://www.cnblogs.com/lin557/p/6179618.html 一.运行环境 Eclipse Neon.1a Release (4.6.1) 官网下载 mysql-5.7.16-winx64(http://cdn.mysql.co

LAMP编译介绍一、 php以模块化的方式结合apache工作

一.PHP在Apache中有三种工作方式: Apache模块: 模块模式是以mod_php5模块的形式集成,此时mod_php5模块的作用是接收Apache传递过来的PHP文件请求,并处理这些请求,然后将处理后的结果返回给Apache.Apache的模块可以在运行的时候动态装载,这意味着对服务器可以进行功能扩展而不需要重新对源代码进行编译,甚至根本不需要停止服务器:但是在动态加载之前,需要将模块编译成为动态链接库.此时的动态加载就是加载动态链接库. Apache中对动态链接库的处理是通过模块mo

小蚂蚁学习APP接口开发(7)—— APP接口实例——读取缓存方式开发APP接口的代码案例

从数据库中直接读取数据,虽然时效性很强,但是对数据库造成很大压力,尤其是在高访问量的情况下.这时候可以通过缓存,来有效的缓解了这一压力,虽然时效性有些不足,但是服务器的抗压能力却达到了很大的提高. 读取缓存方式的中心思想: 当请求进来时,先查看是否有缓存,如果有并且缓存还在有效时间内,不再查询数据库,直接返回缓存即可:如果没有或者已经过了有效时间,查询数据库,返回数据,同时生成一份新的缓存,供以后使用. 代码案例,还是在前几天的代码基础上进行改造完善. File静态缓存类    (原来的代码请参

在 Eclipse 中开发 Apache Derby 应用程序

概述 本文的目的是向您展示如何在 Eclipse 集成开发环境(IDE)中使用几种不同的工具,例如 Java Development Tools.IBM? DB2? plug-ins for Eclipse 和 IBM integration plug-in for Derby,以便开发 Apache Derby 应用程序. 本文将介绍一个典型 Derby 应用程序的整个开发周期,从数据库的创建开始,然后经历 JDBC 客户机应用程序的开发,存储过程和函数的开发,最后是解决方案的开发.本文还将描

每日优鲜小程序订制开发

每日优鲜小程序订制开发[陈经理 180-2406-2897(微/电)]每日优鲜小程序开发,每日优鲜小程序APP开发,每日优鲜微信小程序订制开发 小程序虽已上线9个月,但在微信生态中还非常年轻,正处于学习奔跑的阶段.而且,许多商家对于如何正确获得第一批种子用户,并不十分清楚.今天,就以如何定位种子用户?种子用户在哪里获得?用什么方法沉淀用户?这三个方面,帮助商家解决这一问题. 商家先要知道,自己的小程序能解决用户什么痛点,满足什么需求,和其他类似产品的差异化在哪里.然后,才能给种子用户画像,如性别

循序渐进学.Net Core Web Api开发系列【8】:访问数据库(基本功能)

系列目录 循序渐进学.Net Core Web Api开发系列目录 本系列涉及到的源码下载地址:https://github.com/seabluescn/Blog_WebApi 一.概述 本篇讨论如何连接数据库,包括连接SQL Server 和 连接MySQL,然后做一些基本的数据操作. 二.连接SQL Server 首先通过NuGet添加相关的包: 新建一个实体类: public class Product { [Key] public string Code { get; set; } p

循序渐进学.Net Core Web Api开发系列【9】:常用的数据库操作

系列目录 循序渐进学.Net Core Web Api开发系列目录 本系列涉及到的源码下载地址:https://github.com/seabluescn/Blog_WebApi 一.概述 本篇描述一些常用的数据库操作,包括:条件查询.排序.分页.事务等基本数据库操作.试验的数据库为MySQL. 二.条件查询1.查询所有记录 List<Article> articles = _context.Articles.ToList<Article>(); 2.根据主键进行查询 Articl

使用Scala开发Apache Kafka的TOP 20大好用实践

本文作者是一位软件工程师,他对20位开发人员和数据科学家使用Apache Kafka的方式进行了最大限度得深入研究,最终将生产实践环节需要注意的问题总结为本文所列的20条建议. Apache Kafka是一个广受欢迎的分布式流媒体平台,New Relic.Uber以及Square等数千家公司都在使用它构建可扩展.高吞吐量.可靠的实时流媒体系统.例如,New Relic的Kafka集群每秒处理超过1500万条消息,总数据速率接近1 Tbps. Kafka在应用程序开发人员和数据科学家中非常受欢迎,