2014-01-30 45 views
0

這是測試類: 我嘗試注入一個對象,然後執行操作以測試注入是否失敗。依賴注入在Arquillian測試中不起作用

@RunWith(Arquillian.class) 
public class ExcelProcessorTest { 
    // Not work. Because Paper and ExcelProcessorTest are in different modules? 
    @Inject 
    private Paper paper; 

    @Deployment 
    public static JavaArchive createDeployment() { 
     JavaArchive jar = ShrinkWrap.create(JavaArchive.class, "test.jar") 
       .addClasses(Paper.class) 
       .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml"); 
     System.out.println(jar.toString(true)); 

     return jar; 
    } 

    @Test 
    public void notNullTest() { 
     Assert.assertNotNull(paper); // paper is null here. 
    } 

} 

我一直在一個名爲ftc項目,這是ftc結構:
enter image description here

注意ftcftc-*父模塊。該項目由Maven公約組織。

ExcelProcessorTest類位於ftc-test模塊: enter image description here

而且Paper類位於ftc-ejb模塊:
enter image description here

Paper類是一個簡單的實體bean:

/** 
* Paper generated by hbm2java 
*/ 
@Entity 
@Table(name = "paper") 
public class Paper implements java.io.Serializable { 

    private Integer id; 
    private String title; 
    private String author; 
    private String journal; 
    private String volumn; 
    private String pages; 
    private String alternateJournal; 
    private String issn; 
    private String doi; 
    private String acccessionNumber; 
    private String keywords; 
    private String abstract_; 
    private Integer timesCited; 
    private Integer citedReferenceCount; 
    private String citedReferenceName; 
    private String website; 
    private String pdfPath; 
    private String issue; 
    private Integer paperIndexId; 
    private Integer year; // 論文發表的年份 
    private String type; // OVERVIEW, EXCEL, PAPER 
    private SourceFile sourceFile; 
    private Set<PaperIndex> paperIndexes = new HashSet<PaperIndex>(0); 
    private Set<Sentence> sentences = new HashSet<Sentence>(0); 

    public Paper() { 
    } 
莫非

任何人請告訴我爲什麼注射離子失敗了?

哦..我現在有事要做。我會在幾個小時後回到這裏。如果您需要任何細節,請評論下面的內容。謝謝。

回答

2

我已經想通了。 在Paper類中,我使用了其他一些類,如Sentence.class,PaperIndex.class,但我沒有在addClasses()方法中加入它們。這個被引用的類不能被發現,因此注入失敗。

多麼愚蠢是我...

1

我在同樣的事情磕磕絆絆,我使用@EJB代替@Inject得很完美......只是提供一個提示,但沒有解釋爲什麼。