2014-02-13 42 views
1

我正在通過Mockito測試執行Drools規則。該規則在運行時失敗,報告具有長的任意名稱的java文件的行號。看起來Drools正在生成Java文件並注入到JVM中。但是當我在光盤上搜索這些文件時,我找不到任何文件。有沒有辦法將它們存儲在我的光盤上?Drools訪問生成的java文件

+0

什麼是你得到的錯誤?如果它正在編譯文件,它可能會將它們存儲在臨時位置並在完成時進行清理 - 所以你永遠不會找到它們。然而,錯誤應該指向輸出中某處的實際類文件。 –

+0

這應該是規則編譯錯誤,而不是運行時(規則執行時間)錯誤。在Mockito之外編譯DRL文件,當您向構建器詢問累積錯誤時,您應該看到一條錯誤消息。 – laune

+0

我得到NullPointerException這不看任何意思規則編譯錯誤。 –

回答

5

得到了解決:

你可以轉儲Drools的產生有兩種方式java文件。

1)通過命令行:

-Ddrools.dump.dir="target/dumpDir" 

例如我用maven命令來執行該規則,以便它會

mvn -Ddrools.dump.dir="target/dumpDir" -Dtest=DroolsRuleTest test 

2)通過API

public class FileKnowledgeBaseFactory implements KnowledgeBaseFactory { 
    private Log log = LogFactory.getLog(FileKnowledgeBaseFactory.class); 

    public KnowledgeBase load(String drlFullFilename) { 
     KnowledgeBuilderConfiguration config = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(); 
     config.setOption(DumpDirOption.get(new File("target/dumpDir"))); 

     KnowledgeBuilder knowledgeBuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(config); 

     .... 
     .... 
    } 
} 
+0

我們可以像螞蟻一樣使用mvn嗎? –