jboss junit_使用junit-drools进行JBoss Drools单元测试

jboss junit

最近,我一直在大量使用JBoss Drools进行项目。 我不是Drools专家-我也不太相信这个框架,或者可能不是只相信该项目中的特定用例-我发现很难为基于Drools的业务规则编写简单,可维护的单元测试

这就是junit-drools诞生的方式–简单的帮助程序库,使您无需编写太多样板代码即可编写Drools测试(如在Drools JBoss Rules 5.X开发人员指南示例中所见 )。 unit醇

安装

将Maven存储库和依赖项添加到pom.xml:

<repository><id>maciejwalkowiak.pl</id><url>https://github.com/maciejwalkowiak/maven-repo/raw/releases/</url>
</repository>
<dependency><groupId>pl.maciejwalkowiak</groupId><artifactId>junit-drools</artifactId><version>1.0</version><scope>test</scope>
</dependency>

用法

junit-drools提供了DroolsJUnitRunner类,该类处理您为设置知识库和Drools会话而需要编写的大多数样板代码。

让我们考虑以下示例:

@RunWith(DroolsJUnitRunner.class)
@DroolsFiles(value = "helloworld.drl", location = "/drl/")
public class AppTest {@DroolsSessionStatefulSession session;@Testpublic void should_set_discount() {Purchase purchase = new Purchase(new Customer(17));session.insert(purchase);session.fireAllRules();assertTrue(purchase.getTicket().hasDiscount());}@Testpublic void should_not_set_discount() {Purchase purchase = new Purchase(new Customer(22));session.insert(purchase);session.fireAllRules();assertFalse(purchase.getTicket().hasDiscount());}
}
  • @RunWith(DroolsJUnitRunner) –用于测试Drools规则的JUnit运行器
  • @DroolsFiles –设置drl文件的位置(可以是一个或多个)– drl文件必须位于类路径上– @ DroolsFiles#location相对于src/test/resourcessrc/main/resources
  • @DroolsSession –在执行之前自动将Drools会话注入到您的测试中

在Github上项目的src / test目录中找到带drl文件的完整示例。

如果您不想使用DroolsJUnitRunner,例如因为您已经想使用Mockito或SpringRunner,则可以在@Before方法中初始化Drools对象:

@DroolsFiles(value = "helloworld.drl", location = "/drl/")
public class BeforeMethodBasedTest {@DroolsSessionStatefulSession session;@Beforepublic void initDrools() throws Exception {new DroolsInjector().initDrools(this);}@Testpublic void should_set_discount() {Purchase purchase = new Purchase(new Customer(17));session.insert(purchase);session.fireAllRules();assertTrue(purchase.getTicket().hasDiscount());}
}

我对Drools的经验不是很丰富,因此该库实际上可以完成我正在处理的项目中需要的工作。 欢迎您通过向Github项目发送拉取请求来添加您的改进。

参考:来自JCG合作伙伴 Maciej Walkowiak的junit- drool的JBoss Drools单元测试,来自Software Development Journey博客。

翻译自: https://www.javacodegeeks.com/2013/11/jboss-drools-unit-testing-with-junit-drools.html

jboss junit

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/344714.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

办公基础(小黑课堂)

F2&#xff1a;重命名 F4&#xff1a;重复上次操作 F5&#xff1a;刷新网页 F11&#xff1a;全屏显示网页 F12&#xff1a;另存为 笔记本中&#xff1a;Fn rand() 形成一段文字文本 lorem() 形成一段英文文本 CtrlP&#xff1a;打印 CtrlY&#xff1a;反撤销 Ctrl Shift N…

使用Spring Data JPA进行分页和排序

通过代码示例学习使用Spring Data JPA进行分页和排序 。 了解如何使用Springs PagingAndSortingRepository接口获取分页和排序结果。 1概述 在处理大量数据时&#xff0c;惰性处理通常是必不可少的。 即使服务返回了大量数据&#xff0c;消费者也不太可能使用它。 考虑一个购物…

【从3D点云生成平面图:一种空间划分方法】

文章目录 概要概述实验总结 概要 本文提出了一种从原始传感器数据自动重建室内环境平面图的新方法。现有的方法是通过检测角点并将它们连接起来&#xff0c;以平面图形的形式生成平面图&#xff0c;与此相反&#xff0c;本文采用了一种策略&#xff0c;将空间分解为多边形分区…

数字信号处理基础知识之DFT、DTFT、DFS、FFT基本概念扫盲

一、名词汇总 DFT&#xff1a;离散傅里叶变换&#xff08;Discrete Fourier Transform&#xff09;&#xff1b; DTFT&#xff1a;离散时间傅里叶变换&#xff08;Discrete-time Fourier Transform&#xff09;&#xff1b; DFS&#xff1a;离散傅里叶级数&#xff0c;又称离散…

Word学习笔记

文件菜单&#xff1a; 1、另存为快捷键&#xff1a;F12 论文打印时&#xff0c;保存为PDF格式 2、信息-保护文档-用密码进行加密 3、信息-检查文档 &#xff1a;批量删除相关内容 4、officeplus&#xff1a;模板下载 5、文件-选项-显示 7、文件-选项-校对&#xff1a;去掉波浪…

jersey put 服务_项目学生:带有Jersey的Web服务服务器

jersey put 服务这是Project Student的一部分。 其他职位包括带有Jersey的Webservice Client &#xff0c; 业务层和带有Spring Data的持久性 。 RESTful Web应用程序洋葱的第二层是Web服务服务器。 它应该是一个薄层&#xff0c;用于包装对业务层的调用&#xff0c;但不对其自…

数字基带传输学习笔记00引言

S0 引言 一、是什么 1、什么是数字基带信号&#xff1f; 未经调制的数字信号&#xff0c;所占据频谱从零频或很低频率开始 若信道中传输的是数字信号&#xff0c;则称为数字通信系统。这些信号包含丰富的低频分量&#xff0c;甚至直流分量&#xff0c;称为数字基带信号。 如…

如何在ADF中将参数传递给ActionListener

在某些情况下&#xff0c;需要将值传递给ADF Button的ActionListener。 可以由actionListeners调用的方法只有一个ActionEvent类型的参数。 因此&#xff0c;我将解释如何将参数传递给该bean方法&#xff0c;但是它在方法签名中仅包含一个参数ActionEvent。 我在页面上添加了…

计算机二级公共基础部分学习笔记

1、Rear指向队列最后一个元素的位置 Front指向队列第一个元素的前一个位置 RearFront&#xff0c;要么满&#xff0c;要么空&#xff1b;循环队列元素个数求法&#xff1b; 2、总节点数不同度节点数相加 总节点数度数*对应节点数和1 3、二叉树 前序&#xff1a;根-左-右 中序&…

【渝粤教育】电大中专新媒体营销实务 (9)作业 题库

1.新媒体在进行内容传播时&#xff0c;可以做到将文字、图片、视频等同时传播&#xff0c;呈现出&#xff08; &#xff09;的特点。 A.移动化 B.多元化 C.便捷性 错误 正确答案&#xff1a;左边查询 学生答案&#xff1a;A 2.第四媒体发展到宽带互联网阶段成为&#xff08; &a…

FPGA初学者入门相关概念知识点

一、基础入门 1、整体理解 简单来说&#xff0c;FPGA 就是“可反复编程的逻辑器件”。 ASIC 和 FPGA 就如同印刷品和白纸 ARM 虽然有很多外设&#xff0c;DSP 虽然具备强大的信号运算能力&#xff0c;但是&#xff0c;ARM 能做的&#xff0c;DSP 能做的&#xff0c;FPGA 一定…

java jpa 规范_Java:在JPA中使用规范模式

java jpa 规范本文是在Java中使用规范模式的简介。 我们还将看到如何将经典规范与JPA Criteria查询结合使用&#xff0c;以从关系数据库中检索对象。 在本文中&#xff0c;我们将使用以下Poll类作为创建规范的示例实体。 它表示具有开始和结束日期的民意调查。 在这两个日期之…

01数字基带信号及其频谱特性

S1 数字基带信号及其频谱特性 一、分类 1、单极性不归零波形 优点&#xff1a;电脉冲之间无间隔&#xff0c;极性单一&#xff0c;易于用TTL&#xff0c;CMOS电路产生&#xff1b; 缺点&#xff1a; a) 有直流成份&#xff1b;判决电平不能稳定在最佳的电平&#xff0c;抗噪声…

【渝粤教育】电大中专电商运营实操 作业 题库

1.电子商务最重要的是&#xff08; &#xff09; A.商务 B.网站 C.货物 D.信息技术 正确 正确答案&#xff1a;左边查询 学生答案&#xff1a;A 2.目前菜鸟网络依赖大数据和云计算已实现了哪些功能&#xff08; &#xff09; A.自动化仓库 B.智能发货 C.物流云加速 D.以上都正确…

人工智能英语学习笔记

基础篇单词 mythology n. ancient myths in general; ideas that many people think are true but that do not exist or are false 神话 Examples: A satyr is half man and half goat in Greek and Roman mythology. 在希腊和罗马神话中&#xff0c;森林之神是半人半羊的样子…

【渝粤教育】电大中专电子商务网站建设与维护 (24)作业 题库

1.阿里巴巴网站的不足不包括&#xff08; &#xff09; A.网站定位不当 B.客户过于庞大&#xff0c;往往不重视或忽略了个别小企业基本服务 C.信息冗余 D.“诚信通”的诚信问题 错误 正确答案&#xff1a;左边查询 学生答案&#xff1a;未作答 2.阿里巴巴采用国际化的网站建设方…

CSDN公式编辑(latex语言应用)整理

在线Latex公式编辑器 latex语法指南 一、常用规则 1、编辑公式时&#xff0c;公式显示在两个$$之间。 $ 公式 $ &#xff1a;可写在句中&#xff0c;如me>smartnicehealthyme>smartnicehealthyme>smartnicehealthy $ $ 公式 $ $ &#xff1a;比较大&#xff0c;如me…

API网关正在经历身份危机

这些年来&#xff0c;API网关正在经历一些身份危机 。 它们是否是集中的共享资源&#xff0c;以促进对外部实体的API公开和治理&#xff1f; 它们是集群入口哨兵&#xff0c;可以严格控制哪些用户流量进入或离开集群吗&#xff1f; 还是他们根据自己拥有的客户端类型&#x…

【渝粤教育】广东开放大学 PHP动态网站设计 形成性考核 (48)

选择题 题目&#xff1a;下列说法不正确的是____________。 答案&#xff1a;看左侧 题目&#xff1a;PHP是一种跨平台、的网页脚本语言。 答案&#xff1a;看左侧 题目&#xff1a;PHP网站可称为。 答案&#xff1a;看左侧 题目&#xff1a;PHP网页文件的文件扩展名为________…

通信原理速学02:随机过程

模块1 随机过程 随机过程与样本函数 随机过程指一类随时间做随机变化的过程&#xff0c;用ξ(t)表示&#xff0c;其值不确定&#xff0c;无法用确切的时间函数描述。 随机过程的每一次实现&#xff0c;就称为一次样本函数ξi(t)&#xff0c;随机过程是所有样本函数的集合。 基…