【问题标题】:unit testing -Mock JNDI lookup in WebSphere LIberty单元测试 - 在 WebSphere LIberty 中模拟 JNDI 查找
【发布时间】:2016-12-08 19:58:25
【问题描述】:

我正在使用 WebSphere Liberty 8.5.5 服务器并在此服务器上编写一些批处理测试用例。我正在尝试模拟 jndi 查找对象以进行测试,但是在测试用例中设置 dataSource 对象时出现以下错误,有谁知道如何设置 INITIAL_CONTEXT_FACTORY

错误:javax.naming.NoInitialContextException:需要在环境或系统属性中指定类名 erty,或作为小程序参数,或在应用程序资源文件中:java.naming.factory.initial 在 javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:662) 在 javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:307) 在 javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:344) 在 javax.naming.InitialContext.lookup(InitialContext.java:411)

【问题讨论】:

    标签: unit-testing mocking mockito jndi websphere-liberty


    【解决方案1】:

    您需要在 InitialContext 构造函数的环境中设置您的初始上下文工厂的类名。

    例如:

    Hashtable<Object, Object> env = new Hashtable<>();
    env.put(InitialContext.INITIAL_CONTEXT_FACTORY, "com.example.MockICF");
    new InitialContext(env);
    

    com.example.MockICF 可以写成:

    public class MockICF implements InitialContextFactory {
    
        private static Context ctx = new Mockery().mock(Context.class);
    
        @Override
        public Context getInitialContext(Hashtable<?, ?> environment) throws NamingException {
            return ctx;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-29
      • 2019-12-13
      相关资源
      最近更新 更多