jboss junit_使用junit-drools进行JBoss Drools单元测试
jboss junit
最近,我一直在大量使用JBoss Drools進(jìn)行項(xiàng)目。 我不是Drools專家-我也不太相信這個(gè)框架,或者可能不是只相信該項(xiàng)目中的特定用例-我發(fā)現(xiàn)很難為基于Drools的業(yè)務(wù)規(guī)則編寫簡單,可維護(hù)的單元測試 。
這就是junit-drools誕生的方式–簡單的幫助程序庫,使您無需編寫太多樣板代碼即可編寫Drools測試(如在Drools JBoss Rules 5.X開發(fā)人員指南示例中所見 )。
安裝
將Maven存儲庫和依賴項(xiàng)添加到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類,該類處理您為設(shè)置知識庫和Drools會話而需要編寫的大多數(shù)樣板代碼。
讓我們考慮以下示例:
@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規(guī)則的JUnit運(yùn)行器
- @DroolsFiles –設(shè)置drl文件的位置(可以是一個(gè)或多個(gè))– drl文件必須位于類路徑上– @ DroolsFiles#location相對于src/test/resources或src/main/resources
- @DroolsSession –在執(zhí)行之前自動將Drools會話注入到您的測試中
在Github上項(xiàng)目的src / test目錄中找到帶drl文件的完整示例。
如果您不想使用DroolsJUnitRunner,例如因?yàn)槟呀?jīng)想使用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的經(jīng)驗(yàn)不是很豐富,因此該庫實(shí)際上可以完成我正在處理的項(xiàng)目中需要的工作。 歡迎您通過向Github項(xiàng)目發(fā)送拉取請求來添加您的改進(jìn)。
翻譯自: https://www.javacodegeeks.com/2013/11/jboss-drools-unit-testing-with-junit-drools.html
jboss junit
總結(jié)
以上是生活随笔為你收集整理的jboss junit_使用junit-drools进行JBoss Drools单元测试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关闭防火墙linux命令(防火墙linu
- 下一篇: jersey put 服务_项目学生:带