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