0

「PowerMock+Drools + JBoss」の組み合わせを使用した人はいますか?

JUnitテスト(JUnit 4.10)でdroolsルールの単体テストを実行すると、drlルールknolagekobtextが読み込まれます。

KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add(ResourceFactory.newClassPathResource("com/mycompany/myproject/rooles.drl"), ResourceType.DRL);

そしてそれはうまくいきます。org.drools.io.impl.ClassPathResourceには、次の3つのクラスローダーが含まれています。

  • java.net.FactoryURLClassLoader
  • org.jboss.mx.loading.UnifiedClassLoader
  • sun.misc.Launcher

しかし、私が追加すると

@RunWith(org.powermock.modules.junit4.PowerMockRunner.class)

ユニットテストへorg.drools.io.impl.ClassPathResourceには2つのクラスローダーが含まれています。

  • org.powermock.core.classloader.MockClassLoader
  • sun.misc.Launcher

テストはjava.io.FileNotFoundExceptionで失敗します。

java.lang.RuntimeException: java.io.FileNotFoundException: 'com/mycompany/myproject/rooles.drl' cannot be opened because it does not exist 
at org.drools.compiler.PackageBuilder.addKnowledgeResource(PackageBuilder.java:638) 
at org.drools.builder.impl.KnowledgeBuilderImpl.add(KnowledgeBuilderImpl.java:28)
...
Caused by: java.io.FileNotFoundException: 'com/wiley/cms/jqa/service/lifecycle/lifecycle.drl' cannot be opened because it does not exist 
at org.drools.io.impl.ClassPathResource.getURL(ClassPathResource.java:128) 
at org.drools.io.impl.ClassPathResource.getInputStream(ClassPathResource.java:109) 
at org.drools.compiler.PackageBuilder.addPackageFromDrl(PackageBuilder.java:352) 
at org.drools.compiler.PackageBuilder.addKnowledgeResource(PackageBuilder.java:538)
...

誰かがこの問題を回避する方法を提案できますか?

4

1 に答える 1

0

解決策は、 @PowerMockIgnore("org.drools.*") アノテーションを追加することでした。

于 2012-07-16T15:04:59.667 に答える