单元测试 - 在WebSphere LIberty中进行模拟JNDI查找

时间:2016-12-08 19:58:25

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

我正在使用WebSphere Liberty 8.5.5服务器并在此服务器上编写一些批处理测试用例。我试图模拟jndi查找对象进行测试,但在测试用例中设置dataSource对象时我得到的错误,有没有人知道如何设置INITIAL_CONTEXT_FACTORY

  

错误:javax.naming.NoInitialContextException:需要在环境或系统道具中指定类名   erty,或作为applet参数,或在应用程序资源文件中: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)

1 个答案:

答案 0 :(得分: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;
    }
}