2011-05-05 40 views
1

我是Arquillian的新手,希望獲得一些基本的測試工作(注入一個bean並聲明它執行某些操作)。Arquillian - Weld SE - 獲取NullPointerException

例外:

------------------------------------------------------------------------------- 
Test set: com.walterjwhite.test.TestCase 
------------------------------------------------------------------------------- 
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 1.231 sec <<< FAILURE! 
test(com.walterjwhite.test.TestCase) Time elapsed: 0.02 sec <<< ERROR! 
java.lang.RuntimeException: Could not inject members 
    at org.jboss.arquillian.testenricher.cdi.CDIInjectionEnricher.injectClass(CDIInjectionEnricher.java:113) 
    at org.jboss.arquillian.testenricher.cdi.CDIInjectionEnricher.enrich(CDIInjectionEnricher.java:61) 
    at org.jboss.arquillian.impl.enricher.ClientTestEnricher.enrich(ClientTestEnricher.java:61) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:616) 
    at org.jboss.arquillian.impl.core.ObserverImpl.invoke(ObserverImpl.java:90) 
    at org.jboss.arquillian.impl.core.EventContextImpl.invokeObservers(EventContextImpl.java:98) 
    at org.jboss.arquillian.impl.core.EventContextImpl.proceed(EventContextImpl.java:80) 
    at org.jboss.arquillian.impl.client.ContainerDeploymentContextHandler.createContext(ContainerDeploymentContextHandler.java:133) 
    at org.jboss.arquillian.impl.client.ContainerDeploymentContextHandler.createBeforeContext(ContainerDeploymentContextHandler.java:115) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:616) 
    at org.jboss.arquillian.impl.core.ObserverImpl.invoke(ObserverImpl.java:90) 
    at org.jboss.arquillian.impl.core.EventContextImpl.proceed(EventContextImpl.java:87) 
    at org.jboss.arquillian.impl.TestContextHandler.createTestContext(TestContextHandler.java:82) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:616) 
    at org.jboss.arquillian.impl.core.ObserverImpl.invoke(ObserverImpl.java:90) 
    at org.jboss.arquillian.impl.core.EventContextImpl.proceed(EventContextImpl.java:87) 
    at org.jboss.arquillian.impl.TestContextHandler.createClassContext(TestContextHandler.java:68) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:616) 
    at org.jboss.arquillian.impl.core.ObserverImpl.invoke(ObserverImpl.java:90) 
    at org.jboss.arquillian.impl.core.EventContextImpl.proceed(EventContextImpl.java:87) 
    at org.jboss.arquillian.impl.TestContextHandler.createSuiteContext(TestContextHandler.java:54) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:616) 
    at org.jboss.arquillian.impl.core.ObserverImpl.invoke(ObserverImpl.java:90) 
    at org.jboss.arquillian.impl.core.EventContextImpl.proceed(EventContextImpl.java:87) 
    at org.jboss.arquillian.impl.core.ManagerImpl.fire(ManagerImpl.java:126) 
    at org.jboss.arquillian.impl.core.ManagerImpl.fire(ManagerImpl.java:106) 
    at org.jboss.arquillian.impl.EventTestRunnerAdaptor.before(EventTestRunnerAdaptor.java:85) 
    at org.jboss.arquillian.junit.Arquillian$4.evaluate(Arquillian.java:210) 
    at org.jboss.arquillian.junit.Arquillian.multiExecute(Arquillian.java:303) 
    at org.jboss.arquillian.junit.Arquillian.access$300(Arquillian.java:45) 
    at org.jboss.arquillian.junit.Arquillian$5.evaluate(Arquillian.java:228) 
    at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79) 
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71) 
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49) 
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) 
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) 
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) 
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) 
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) 
    at org.jboss.arquillian.junit.Arquillian$2.evaluate(Arquillian.java:173) 
    at org.jboss.arquillian.junit.Arquillian.multiExecute(Arquillian.java:303) 
    at org.jboss.arquillian.junit.Arquillian.access$300(Arquillian.java:45) 
    at org.jboss.arquillian.junit.Arquillian$3.evaluate(Arquillian.java:187) 
    at org.junit.runners.ParentRunner.run(ParentRunner.java:236) 
    at org.jboss.arquillian.junit.Arquillian.run(Arquillian.java:127) 
    at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:35) 
    at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:115) 
    at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:97) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:616) 
    at org.apache.maven.surefire.booter.ProviderFactory$ClassLoaderProxy.invoke(ProviderFactory.java:103) 
    at $Proxy0.invoke(Unknown Source) 
    at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:150) 
    at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcess(SurefireStarter.java:91) 
    at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:69) 
Caused by: java.lang.NullPointerException 
    at org.jboss.arquillian.testenricher.cdi.CDIInjectionEnricher.getBeanManager(CDIInjectionEnricher.java:51) 
    at org.jboss.arquillian.testenricher.cdi.CDIInjectionEnricher.injectClass(CDIInjectionEnricher.java:100) 
    ... 71 more 

TestCase類

@RunWith(Arquillian.class) 
public class TestCase 
{ 
    @Deployment 
    public static JavaArchive createDeployment() 
    { 
     return ShrinkWrap.create(JavaArchive.class).addClasses(TestEntity.class, Implementation.class) 
             .addAsManifestResource(EmptyAsset.INSTANCE, ArchivePaths.create("beans.xml")); 
    } 

    @Inject 
    Implementation implementation; 

    @Test 
    public void test() throws Exception 
    { 
     final TestEntity testEntity = implementation.create(); 

     Assert.assertNotNull(testEntity); 
    } 
} 

當我運行它,我得到一個NullPointerException異常,豆經理爲空。它看起來像我缺少一個步驟,但從例子來看,這看起來就是我應該需要的。

任何想法?

Walter

回答

2

它在我看來就像試圖使用最新的快照。目前Arquillian存儲庫正在進行重組,所以除非您有跟蹤HEAD的具體原因,否則我推薦使用Alpha5。

您可以在Arquillian展櫃中看到有效的CDI示例。 http://github.com/arquillian/arquillian-showcase

+0

很酷,非常感謝,我會給它一個旋轉。 – Walter 2011-05-07 14:27:46

+0

完美,就是這樣。 – Walter 2011-05-09 02:19:15

1

我和arquillian 1.0.4.Final有類似的問題。獲取「java.lang.RuntimeException:無法注入成員」加棧跟蹤。這是一年以來運行的測試。如果逐個調用測試類,則JUnit測試可以工作,但如果通過對整個模塊執行Junit測試或對整個項目進行Maven站點測試來調用所有測試,則JUnit測試失敗。無論如何解決問題,但重置arquillian版本回到1.0.3.Final!

相關問題