jboss junit
最近,我一直在大量使用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/resources
或src/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项目发送拉取请求来添加您的改进。
翻译自: https://www.javacodegeeks.com/2013/11/jboss-drools-unit-testing-with-junit-drools.html
jboss junit