2012-07-16 3 views
0

Кто-нибудь использовал комбинацию «PowerMock + Drools + JBoss»?FileNotFoundException с PowerMock + Drools + JBoss

Когда я бегу пытаюсь модульного тестирования с использованием правил пускает слюни в 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. *").