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,一经查实,立即删除!

相关文章

【从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;又称离散…

数字基带传输学习笔记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;根-左-右 中序&…

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

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

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

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

人工智能英语学习笔记

基础篇单词 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;森林之神是半人半羊的样子…

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

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

API网关正在经历身份危机

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

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

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

使用Apache Ignite瘦客户端– Apache Ignite内部博客

从2.4.0版本开始&#xff0c;Apache Ignite引入了一种新的连接到Ignite群集的方法&#xff0c;该方法允许与Ignite群集进行通信而无需启动Ignite客户端节点。 从历史上看&#xff0c;Apache Ignite提供了客户端和服务器节点两个概念。 点燃旨在用作轻量级模式的客户端节点&…

2020-12-15通信原理

1、随机过程是一类随时间作随机变化的过程&#xff0c;不能用确切的时间函数描述。 不同角度理解&#xff1a;&#xff08;1&#xff09;对应不同随机试验结果的时间过程的集合&#xff1b;&#xff08;2&#xff09;随机过程是随机变量概念的延伸。 可以把随机过程看作是在时间…

2020-12-19通信电子线路第一章

振幅键控&#xff08;Amplitude-shift keying&#xff09; (ASK) 相位键控&#xff08;phase-shift keying&#xff09; (PSK) 频率键控&#xff1a;&#xff08;Frequency-shift keying&#xff09; (FSK) CDMA (Code Division Multiple Access) 码分多址 软件无线电结构&am…

现代交换技术学习笔记001

1、交换 在通信领域中&#xff0c;所谓交换&#xff0c;就是在通信网上&#xff0c;负责在通信的源和目的终端之间建立通信信道传送通信信息的机制&#xff08;控制&#xff09;。 2、通信网的组成&#xff08;三要素&#xff09; 交换设备&#xff0c;传输设备&#xff0c;终端…

移动通信学习笔记_01概述

OSI 7层模型&#xff1a;应用层、表示层、会话层、传输层、网络层、数据链路层、物理层 TCP/IP共5层&#xff1a;物理层、数据链路层、网络层、传输层&#xff08;运输层&#xff09;、应用层 物理层&#xff1a;编码&#xff08;信道编码&#xff09;、调制 本课程&#xff1a…

计算机二级office学习之PPT操作题考点整理

考点1 新建幻灯片 01 大纲级别 S1、word中&#xff1a;选择格式相似的文本-段落大纲级别&#xff1b; S2、打开PPT&#xff1a;新建幻灯片-幻灯片从大纲-选择word文档。 (S3、不保留原素材的格式&#xff09;在预览窗口ctrlA&#xff0c;右键重设幻灯片。 注&#xff1a;若无法…

计算机二级考前急救之Word(上)

一、文件选项卡 &#xff08;思维导图来源&#xff1a;小黑老师&#xff09; 1、另存为PDF格式&#xff1a;&#xff08;另存为快捷键&#xff1a;F12&#xff09; 2、去掉兼容模式&#xff1a;文件-信息-转换 3、删除不可见的内容&#xff1a;文件-信息-检查文档&#xff08…

参数化测试 junit_使用JUnitParams进行参数化的JUnit测试

参数化测试 junit参数化的单元测试用于在不同条件下测试相同的代码。 借助参数化的单元测试&#xff0c;我们可以建立一种测试方法&#xff0c;该方法从某个数据源中检索数据。 该数据源可以是测试数据对象&#xff0c;外部文件甚至数据库的集合。 一般的想法是使使用相同的单元…

计算机二级office学习之Excel操作题考点整理

考点1 页面设置 页面布局-页边距、纸张方向、纸张大小、打印区域、页面背景、打印标题、页眉页脚、缩印 页面布局-选中打印区域-打印标题-顶端标题行-选中第二行 考点2 获取外部数据和删除重复值 1、获取外部数据 1.1 自网页 右击文件-打开方式为IE浏览器&#xff08;360可…