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

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

安装

将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

使用junit-drools进行JBoss Drools单元测试相关推荐

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

    jboss junit 最近,我一直在大量使用JBoss Drools进行项目. 我不是Drools专家-我也不太相信这个框架,或者可能不是只相信该项目中的特定用例-我发现很难为基于Drools的业务 ...

  2. JBoss Drools –入门

    这篇文章是关于我如何掌握JBoss Drools的 . 其背后的原因是:SAP收购了我公司当前的规则引擎,而Drools是我们将寻找的另一种选择,只要有人掌握了概念验证的技能即可. 尽管似乎有大量的文 ...

  3. 学习笔记:首次进行JUnit+Ant构建自动的单元测试(一)

    指导博客:https://blog.csdn.net/Cceking/article/details/51692010 基于软件测试的需求,使用JUnit+Ant构建自动的单元测试. IDE:ecli ...

  4. junit进行单元测试_通过JUnit规则轻松进行AppEngine单元测试

    junit进行单元测试 by Ramesh Lingappa 通过拉梅什·林加帕(Ramesh Lingappa) 通过JUnit规则轻松进行AppEngine单元测试 (AppEngine unit ...

  5. 规则引擎JBoss Drools简介

    一.简介 项目官网:Drools - Drools - Business Rules Management System (Java™, Open Source) 源码:GitHub - kiegro ...

  6. junit 内部类测试_Springboot 使用单元测试

    本文公众号来源:美码师作者:美码师本文已收录至我的GitHub 目标 了解 单元测试的背景 了解如何 利用 springboot 实现接口的测试 了解如何 利用 mokito 做代码的 mock 一. ...

  7. drools dmn_使用Drools的DMN运行时示例

    drools dmn 正如去年宣布的那样 ,Drools 7.0将在合规级别3对DMN模型提供全面的运行时支持. 在撰写本文时,运行时实现已完成,并且该团队现在正在努力进行改进,以进行错误修复和用户友 ...

  8. maven junit测试_使用Maven Failsafe和JUnit @Category将集成测试与单元测试分开

    maven junit测试 为什么单元测试应与集成测试分开运行 单元测试级别的TDD相当简单,因为单元测试中的类要么没有复杂的依赖关系,要么使用模拟框架(例如Mockito)来模拟依赖关系. 但是,当 ...

  9. 使用Maven Failsafe和JUnit @Category将集成测试与单元测试分开

    为什么单元测试应与集成测试分开运行 单元测试级别的TDD相当简单,因为单元测试中的类要么没有复杂的依赖关系,要么使用模拟框架(例如Mockito)来模拟依赖关系. 但是,当我们进入集成测试时,TDDS ...

最新文章

  1. 函数不可访问_C++之访问控制与继承
  2. 白话Elasticsearch54-数据建模之通过【应用层join】或者【数据冗余】实现实现用户与博客的关联
  3. [zz]volatile
  4. C#中容器控件GroupBox、Panel、TabControl
  5. 如何解决 SQL Server 安装程序中的 COM+ 系统配置检查失败问题
  6. C# Span 源码解读和应用实践
  7. eplan 2.7安装过程中multikey黄色感叹号解决办法
  8. Android截图命令screencap
  9. 科目三考试技巧全总结
  10. 用户分层之RFM模型
  11. 4 Day:MBR使用硬盘
  12. 数据防泄密系统,你了解多少呢?
  13. 关于网页图标添加shortcut icon与icon
  14. Mifare Ultra Light 非接触式IC卡
  15. 11个免费高清图片下载站
  16. MybatisX插件的使用
  17. 2022大学生就业指导答案——雷五明、雷辉等
  18. Redis学习记录(一)
  19. 官方途径 | 知网、维普、万方、中文在线免费下载,不限次!
  20. 牛客刷题记录之语法入门循环结构篇1.0

热门文章

  1. Mybatis传入参数类型为ListIntergert作为条件进行查询
  2. 机器人点焊枪接线_用于焊接机器人焊枪工具点及工件坐标系标定装置及方法与流程...
  3. Spring boot(七):Spring boot+ mybatis 多数据源最简解决方案
  4. apache.camel_Apache Camel 3.1 – XML路由的快速加载
  5. gwt格式_GWT HTTP请求替代方案
  6. 敏捷中gwt含义_在GWT中序列化/反序列化Json
  7. hibernate jpa_使用Hibernate(JPA)一键式删除
  8. spring boot注释_使用Spring Boot和注释支持配置Spring JMS应用程序
  9. Spring Boot删除嵌入式Tomcat服务器,启用Jetty服务器
  10. 使用Spring Rest和Spring Data JPA和H2以及Spring Boot示例的Restful API