2012-07-16 44 views
0

有沒有人使用過「PowerMock + Drools + JBoss」組合?使用PowerMock + Drools + JBoss的FileNotFoundException

當我試圖運行單元測試口水使用JUnit測試規則(JUnit的4.10)我加載DRL規則knolage kobtext:

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合作ntains 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) 
... 

任何人都可以建議如何避免這個問題?

回答

0

解決方案是添加@PowerMockIgnore(「org.drools。*」)註釋。