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)
...
任何人都可以建議如何避免這個問題?