<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><blockquote type="cite"><br></blockquote><div>Thanks. &nbsp;Sorry for few details as this has been a several message question. &nbsp;I have created a Drools plugin that contains EITHER the maximum number of jars and dependencies (i.e. ALL), or the minimum (i.e. those needed for compiler option only processing DRL files), or adding the entire Drools distribution to my Java extensions folder in OS X, and in all instances, I get an error loading dialects. &nbsp;The enigma for me is that all of these plugin options enable me to make a stand alone RCP application that works fine.</div><div><br class="webkit-block-placeholder"></div><div>Here is the test unit code:</div><div><br class="webkit-block-placeholder"></div><div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(100, 100, 100); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span>@BeforeClass</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">        </span><span style="color: #7f0055">public</span> <span style="color: #7f0055">static</span> <span style="color: #7f0055">void</span> setUp() <span style="color: #7f0055">throws</span> Exception {</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">                </span>Reader source;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">                </span>PackageBuilderConfiguration pkgConfig = <span style="color: #7f0055">new</span> PackageBuilderConfiguration();</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">                </span>JavaDialectConfiguration javaDialectConf = (JavaDialectConfiguration) pkgConfig.getDialectConfiguration(<span style="color: #2a00ff">"java"</span>);</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">                </span>javaDialectConf.setCompiler(JavaDialectConfiguration.<span style="color: #0000c0">ECLIPSE</span>);</div><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px"><span class="Apple-tab-span" style="white-space:pre">                </span><br class="webkit-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">                </span><span style="color: #7f0055">final</span> PackageBuilder builder = <span style="color: #7f0055">new</span> PackageBuilder(pkgConfig);</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">                </span><span style="color: #7f0055">boolean</span> exists = (<span style="color: #7f0055">new</span> File(<span style="color: #2a00ff">"rules/GlucoseDroolRules00.drl"</span>)).exists();</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">                </span><span style="color: #7f0055">if</span> (exists) {</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">                        </span>builder.addPackageFromDrl(<span style="color: #7f0055">new</span> FileReader(</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(42, 0, 255); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                                </span></span>"rules/GlucoseDroolRules00.drl"<span style="color: #000000">));</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">                        </span>System.<span style="color: #0000c0">out</span>.println(<span style="color: #2a00ff">"Found the file!"</span>);</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">                </span>} <span style="color: #7f0055">else</span> {</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(42, 0, 255); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                        </span>System.</span><span style="color: #0000c0">out</span><span style="color: #000000">.println(</span>"Cannot locate the file - will try as resource"<span style="color: #000000">);</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">                        </span>source = <span style="color: #7f0055">new</span> InputStreamReader(AllDroolsRulesTests.<span style="color: #7f0055">class</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(42, 0, 255); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                                        </span>.getResourceAsStream(</span>"rules/GlucoseDroolRules00.drl"<span style="color: #000000">));</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; min-height: 15px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">                        </span>builder.addPackageFromDrl(source);</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">                </span>}</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">                </span><span style="color: #7f0055">if</span> (builder.hasErrors()) {</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">                        </span>System.<span style="color: #0000c0">out</span>.println(builder.getErrors().toString());</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">                </span>}</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">                </span>Package pkg = builder.getPackage();</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">                </span><span style="color: #0000c0">ruleBase</span> = RuleBaseFactory.newRuleBase();</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">                </span><span style="color: #0000c0">ruleBase</span>.addPackage(pkg);</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div><font class="Apple-style-span" face="Monaco" size="3"><span class="Apple-style-span" style="font-size: 11px;"><br class="webkit-block-placeholder"></span></font></div>
</div><div>It crashes in the line trying to instantiate the package configuration. &nbsp;If I eliminate the lines that configure the package, and invoke the package building without an argument (the default), then the crash occurs in that line. The crash trace:</div><div><br class="webkit-block-placeholder"></div><div><div>org.drools.RuntimeDroolsException: Unable to load dialect 'org.drools.rule.builder.dialect.java.JavaDialectConfiguration:java'</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.drools.compiler.PackageBuilderConfiguration.addDialect(PackageBuilderConfiguration.java:152)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.drools.compiler.PackageBuilderConfiguration.buildDialectConfigurationMap(PackageBuilderConfiguration.java:140)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.drools.compiler.PackageBuilderConfiguration.init(PackageBuilderConfiguration.java:117)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.drools.compiler.PackageBuilderConfiguration.&lt;init&gt;(PackageBuilderConfiguration.java:94)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at droolsRules.tests.AllDroolsRulesTests.setUp(AllDroolsRulesTests.java:40)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at java.lang.reflect.Method.invoke(Method.java:585)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.junit.internal.runners.BeforeAndAfterRunner.invokeMethod(BeforeAndAfterRunner.java:74)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.junit.internal.runners.BeforeAndAfterRunner.runBefores(BeforeAndAfterRunner.java:50)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:33)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)</div><div>Caused by: java.lang.NullPointerException</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.drools.compiler.PackageBuilderConfiguration.addDialect(PackageBuilderConfiguration.java:146)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>... 18 more</div><div><br class="webkit-block-placeholder"></div><div>This trace is identical in all instances. &nbsp;I have looked at the source code and it appears that the Drools code is looking for the drools configuration file, and I am not sure if this is included in the classpath when running JUnit. &nbsp;However, the minimal and maximal plugin configurations make an RCP run perfectly as a standalone application.</div><div><br class="webkit-block-placeholder"></div><div>This is Eclipse 3.3 fall version, Mac OXX Leopard (but have run on Tiger and same error, so not a new Apple bug), Drools 4.03, and JUnit 4.</div><div><br class="webkit-block-placeholder"></div><div>Thanks.</div></div><br><blockquote type="cite">------------------------------<br><br>Message: 8<br>Date: Tue, 4 Dec 2007 06:50:15 -0800 (PST)<br>From: "John J. Franey" &lt;<a href="mailto:jjfraney@gmail.com">jjfraney@gmail.com</a>&gt;<br>Subject: Re: [rules-users] JUnit testing<br>To: <a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>Message-ID: &lt;<a href="mailto:14151759.post@talk.nabble.com">14151759.post@talk.nabble.com</a>&gt;<br>Content-Type: text/plain; charset=us-ascii<br><br><br><br><br>J Michael Dean wrote:<br><blockquote type="cite"><br></blockquote><blockquote type="cite">I am having problems figuring out how to do JUnit 4 unit tests with &nbsp;<br></blockquote><blockquote type="cite">Drools and am wondering what I am missing.<br></blockquote><blockquote type="cite"><br></blockquote><br>I'm successfully using junit4 to test rules. &nbsp;I build a rules package from<br>my rules file, create a stateful session, insert facts, fire all rules, run<br>queries, and finally, perform junit asserts on the results.<br><br>I can't tell you what you are missing, unless you say what you have.<br><br>Regards,<br>John<br><br><br>-- <br>View this message in context: <a href="http://www.nabble.com/JUnit-testing-tf4930259.html#a14151759">http://www.nabble.com/JUnit-testing-tf4930259.html#a14151759</a><br>Sent from the drools - user mailing list archive at Nabble.com.<br><br><br><br>------------------------------<br><br>_______________________________________________<br>rules-users mailing list<br><a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>https://lists.jboss.org/mailman/listinfo/rules-users<br><br><br>End of rules-users Digest, Vol 13, Issue 6<br>******************************************<br></blockquote></div><br></body></html>