在测试需要UserTransaction的方法时,NameNotFoundException

时间:2013-01-24 05:42:12

标签: java jdbc jboss junit

我在执行一些数据插入时检索UserTransaction,并且代码在jboss中运行应用程序时工作正常。但是,当使用Ecplise运行时,它在JUnit测试中失败

javax.naming.NameNotFoundException: Name java:comp is not bound in this Context.

获取交易的我的代码低于

public static UserTransaction getUserTransation() throws CommonServiceException{
        Context context = null;
         UserTransaction ut = null;
        try {
            context = new InitialContext();
            ut = (UserTransaction)
            context.lookup("java:comp/UserTransaction");
        } catch (NamingException e) {
            throw new CommonServiceException(XMLReader.getErrorCode("Connector:getUserTransation"), e.getMessage(), e);
        }

          return ut;
    }

找不到java:comp。在我的Junit测试课程中,有什么我应该专门为我做的工作吗?

加了:

我将以下代码添加到测试类中,但没有给出上述错误。但是在执行提交说没有事务时它失败了。

            ic = new InitialContext();

            ic.createSubcontext("java:");
            ic.createSubcontext("java:comp");
            ut = new UserTransactionImpl();  
            ic.bind("java:comp/UserTransaction",ut);

1 个答案:

答案 0 :(得分:0)

我认为您不能通过创建新的UserTransactionImpl来解决问题。更好的方法可能是创建一个模拟的UserTransaction实现,然后将 绑定到jndi。

您当前绑定的那个可能取决于容器中没有的其他“魔法”