这是测试类:
我尝试注入一个Paper
对象然后执行操作以测试注入是否失败。
@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
的结构:
请注意,ftc
是ftc-*
的父模块。该项目由Maven大会组织。
ExcelProcessorTest
类位于ftc-test
模块中:
Paper
课程位于ftc-ejb
模块中:
Paper
class是一个简单的实体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() {
}
有人可以告诉我注射失败的原因吗?
哦,我现在有事要做。我会在几个小时后回到这里。如果您需要任何细节,请发表评论。感谢。答案 0 :(得分:2)
我已经弄明白了。
在Paper
课程中,我使用了其他一些课程,例如Sentence.class
,PaperIndex.class
,但我没有在addClasses()
方法中添加它们。无法找到此引用的分类,因此注射失败。
我多么愚蠢......
答案 1 :(得分:2)
我在同样的事情上磕磕绊绊,因为我使用@EJB代替@Inject完美地完成了...只是提供一个提示,但没有解释原因。