NullPointerException,集成测试ejb

时间:2017-04-14 12:54:46

标签: java maven junit mockito dbunit

我有一个包含太多方法的Web服务,之前我用soap手动“测试它”,但现在我想用Junit和其他框架来与数据库进行交互并使用@EJB注释。 我发现的第一个例子是使用DBunit,因此我连接到数据库并在表中放入一行(并且它可以工作)。但是当我尝试重用这个连接,并尝试直接调用我的@Stateless方法时,我在EJB或实体管理器上有太多错误,例如NullPointer异常,所以我尝试了一个complet不同的逻辑并使用Mockito,如下所示: / p>

public class ReportBeanTest {

    //This is my Stateless class
    private ReportFc reportBean = new ReportFc();

    @Before
    public void injectMockEntityManager() throws Exception {
        EntityManager entityManager = mock(EntityManager.class);
        reportBean.emReport = entityManager;
        DateFc dateF= mock(DateFc.class);
        reportBean.dateF =dateF;
        QuerysFc queryF= mock(QuerysFc .class);
        reportBean.queryF =queryF;
        reportBean.getReport("myReportA", new Date(), new Date());
    }
}

这是我的ReportFc.java:

    @Stateless
    public class ReportFc {
    @PersistenceContext(unitName="myDb")
        public
        EntityManager emReport;
        @EJB
        public
        DateFc dateF;

        @EJB
        public
        QuerysFc queryF;

        public List<MyList> getReport(String myReport,
                Date from_date,
                Date to_date
                ) throws WSException {
            try{
                List<WsMap_v3> resultList = new LinkedList<WsMap_v3>();

                Date start= dataF.parserDateFormat(from_date,0,"noTime");
                Date end= dataF.parserDateFormat(to_date,0,"noTime");
                dateF.verifyTimeInterval(start,end);
                Query qC=queryF.queryGetReportBetweenDate(start, end, myReportA);
...///
    }

我看到每个使用外部EJB的变量都是null,就像我的情况一样: 日期开始,日期结束,查询qC等等......我做错了什么?还有其他方法可以测试使用EJB或entitymanager的这个函数吗? 我正在使用maven所以如果有其他框架可以使用我没有问题导入它。 其他的事情:我的db的所有bean都在jar中,我用maven dependecy导入

0 个答案:

没有答案