3.4. 单元测试

由于Flowable DMN是一个可嵌入的Java引擎,因此编写DMN定义的单元测试就像编写常规单元测试一样简单。

Flowable支持JUnit版本4和5样式的单元测试。

在JUnit 5样式中,需要使用 org.flowable.dmn.engine.test.FlowableDmnTest 注解

或手动注册 org.flowable.dmn.engine.test.FlowableDmnExtension 。

FlowableDmnTest 注解只是一个元注解,并且注册了 FlowableDmnExtension

(即 @ExtendWith(FlowableDmnExtension.class)).

这将使DmnEngine和服务可用作测试和生命周期方法的参数

(@BeforeAll, @BeforeEach, @AfterEach, @AfterAll).

在每次测试之前,默认情况下将使用类路径上的 flowable.dmn.cfg.xml 资源初始化dmnEngine。

为了指定不同的配置文件需要使用org.flowable.dmn.engine.test.DmnConfigurationResource 注解(参见第二个例子)。

当配置资源相同时,Dmn引擎将在多个单元测试中静态缓存。

通过使用 FlowableDmnExtension ,您可以在测试方法上使用 org.flowable.dmn.engine.test.DmnDeployment 注解或 org.flowable.dmn.engine.test.DmnDeploymentAnnotation 注解。

如果同时使用 @DmnDeployment 和 @DmnDeploymentAnnotatio 那么 @DmnDeployment 优先,@DmnDeploymentAnnotation 将被忽略。

在测试方法上使用 @DmnDeployment 注解时,在每次测试之前,将部署 DmnDeployment#resources 中定义的dmn文件。

如果没有定义资源,则为 testClassName.testMethod.dmn 形式的资源文件,将在与测试类相同的包中进行部署。

在测试结束时,部署将被删除,包括所有相关的dmn定义,执行等。

有关更多信息,请参阅 DmnDeployment 类。

考虑到所有这些,JUnit 5测试看起来如下:

使用默认资源进行JUnit 5测试

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17@FlowableDmnTest

class MyDecisionTableTest {

@Test

@DmnDeploymentAnnotation

void simpleDmnTest(DmnEngine dmnEngine) {

DmnRuleService dmnRuleService = dmnEngine.getDmnRuleService();

Map executionResult = ruleService.createExecuteDecisionBuilder()

.decisionKey("extensionUsage")

.variable("inputVariable1", 2)

.variable("inputVariable2", "test2")

.executeWithSingleResult();

Assertions.assertThat(executionResult).containsEntry("output1", "test1");

}

}

使用JUnit 5,您还可以将部署的ID(带有org.flowable.dmn.engine.test.DmnDeploymentId_)注入到测试和生命周期方法中。

使用自定义资源进行JUnit 5测试

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18@FlowableDmnTest

@DmnConfigurationResource("flowable.custom.dmn.cfg.xml")

class MyDecisionTableTest {

@Test

@DmnDeploymentAnnotation

void simpleDmnTest(DmnEngine dmnEngine) {

DmnRuleService dmnRuleService = dmnEngine.getDmnRuleService();

Map executionResult = ruleService.createExecuteDecisionBuilder()

.decisionKey("extensionUsage")

.variable("inputVariable1", 2)

.variable("inputVariable2", "test2")

.executeWithSingleResult();

Assertions.assertThat(executionResult).containsEntry("output1", "test1");

}

}

在编写JUnit 4单元测试时,可以使用 org.flowable.dmn.engine.test.FlowableDmnRule 规则。通过此规则,DMN引擎和服务可通过getter获得。包含此 Rule 将启用注解 org.flowable.dmn.engine.test.DmnDeploymentAnnotation (请参阅上文,了解其使用和配置) 它将在类路径中查找默认配置文件。 当使用相同的配置资源时,DMN引擎可以在多个单元测试中静态缓存。

也可以为规则提供自定义引擎配置。

以下代码片段显示了使用JUnit 4测试样式和 FlowableDmnRule 的用法的示例(并传递可选的自定义配置):

JUnit 4 test

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20public class MyDecisionTableTest {

@Rule

public FlowableDmnRule flowableDmnRule = new FlowableDmnRule("custom1.flowable.dmn.cfg.xml");

@Test

@DmnDeploymentAnnotation

public void ruleUsageExample() {

DmnEngine dmnEngine = flowableDmnRule.getDmnEngine();

DmnRuleService dmnRuleService = dmnEngine.getDmnRuleService();

Map executionResult = ruleService.createExecuteDecisionBuilder()

.decisionKey("extensionUsage")

.variable("inputVariable1", 2)

.variable("inputVariable2", "test2")

.executeWithSingleResult();

Assertions.assertThat(executionResult).containsEntry("output1", "test1");

}

}

oracle开启关闭严格模式,Flowable DMN 用户手册 (v 6.4.2-SNAPSHOT)相关推荐

  1. oracle开启/关闭归档模式

    1.改变非归档模式到归档模式: 1)SQL> conn / as sysdba (以DBA身份连接数据库) 2)SQL> shutdown immediate;(立即关闭数据库) 3)SQ ...

  2. mysql 严格模式_MySQL 开启/关闭 严格模式(Strict Mode)

    [广告:最高 ¥2000 红包]阿里云服务器.主机等产品通用,可叠加官网常规优惠使用 | 限时领取 查看 Mysql 是否开启严格模式: 打开 MySQL 配置文件 my.cnf(windows为my ...

  3. php夜间,php实现自动开启/关闭夜间模式

    说明 纯属没事写着玩的,别上纲上线.判断日出日落都是按照北京时间来的,不会按照ip地址精确到省份.我是写代码的,不是气象台的! 实现 首先,想要自动开启/关闭夜间模式我们需要知道现在的太阳的状态(日出 ...

  4. codeigniter如何开启关闭调试模式?

    当我们在用codeigniter做项目开发时,在开发环境里面需要开启调试模式,在开发以及测试完成后就需要发布到服务器里面上线运营了.那么,codeigniter如何开启关闭调试模式呢? 开启调试模式: ...

  5. Android开启/关闭飞行模式命令

    1.打开飞行模式 # adb shell am broadcast -a android.intent.action.AIRPLANE_MODE --ez state true2.关闭飞行模式 # a ...

  6. Oracle开启关闭归档日志

    开启归档日志 shutdown immediate; --关闭数据库 startup mount; --打开数据库 alter database archivelog; --开启归档日志 alter ...

  7. Flowable BPMN 用户手册 (v 6.5.0-SNAPSHOT)

    http://www.shareniu.com/flowable6.5_zh_document/bpm/index.html#

  8. windows上帝模式是什么:一键开启windows7上帝模式、windows10上帝模式、win11上帝模式的小工具,无需windows上帝模式代码

    首先给大家科普下windows上帝模式是什么,看上去很高大上的名字,其实就是一个被微软默认隐藏起来的全功能控制面板的集中展示模式,据悉是微软早在Windows Vista时代就开始引入了这个隐藏模式, ...

  9. oracle存档模式,Oracle开启归档模式并设置RMAN自动备份策略

    title: Oracle开启归档模式并设置RMAN自动备份策略 categories: 数据库 tags: - Oracle - RMAN timezone: Asia/Shanghai date: ...

最新文章

  1. MySQL 修改账号的IP限制条件
  2. HDU - 3911 Black And White 区间翻转+区间连续最长
  3. c++ int *p = new int()
  4. 第十届蓝桥杯 等差数列(Python)
  5. dmg镜像 os vm 安装mac_dmg制作笔记:个性化自己的Mac软件安装包
  6. python课程的中期报告_寒假中期学习报告
  7. linux 查看pgsql端口,如何通过Linux脚本检查是否已安装PostgreSQL?
  8. 【SEW-伺服电机-Profinet-io通讯控制——伺服配置】
  9. 8421码到5421码的转换_8421码转换为5421码
  10. 推荐的五款市面上常用的免费CMS建站系统
  11. 微信PC端电脑端多开 CMD打开多个微信
  12. VIVO应用市场APP上架总结
  13. 如果你是CEO,你打算给自己开多少工资?
  14. Slax本土化:移动硬盘上的Linux中文套件(转)
  15. EOJ.Weights
  16. 大数据周会-本周学习内容总结0102
  17. 怎样读 nacos 源码——服务端处理客户端注册解读
  18. 国产奶粉逆袭的10年:90后奶爸奶妈助力新国货逆袭洋品牌
  19. 项目管理中的ABC分类法(转)
  20. nn.Linear() 函数可二维或三维输入

热门文章

  1. extjs4 冻结列_ExtJs4之Grid详细
  2. 2023年郑州Java培训机构排名新鲜出炉,快来看看都有哪些!
  3. 用《人人都是产品经理》的思维做科研
  4. 切线和倒数_导数法求切线
  5. touchGFX学习
  6. PHP中的类与对象详细解读
  7. Android自定义View实现喜马拉雅播放状态切换
  8. Java中getneighbor,桩号转经纬度的实现[Java编程]
  9. 几个经典问题:1)项目利益分配;2)如何提涨薪:3)老油条 的处理;4)我提离职后老板态度好了……
  10. 区位码 国际码 机内码 转换