java - 模拟 jdbc 数据源时遇到的困难

标签 java mocking easymock powermock

我想模拟 Datasource 和 InitialContext 以连接到容器外部的数据库。这是我想使用模拟的逻辑:

        Connection con = null;
        Context context = new InitialContext();
        DataSource datasource = (DataSource) context.lookup("jdbc/chu");
        con = datasource.getConnection();

这就是我的做法

        // create the Connection
        connection = createMyConnection();//connection i construct manually 
        // Mock the Datasource
        DataSource datasourceMock = EasyMock.createMock(DataSource.class);
        EasyMock.expect(datasourceMock.getConnection())
                                      .andReturn(connection).anyTimes();
        // Mock the context
        Context contextMock = EasyMock.createMock(InitialContext.class);
        EasyMock.expect((DataSource)contextMock.lookup("jdbc/chu"))
                                     .andReturn(datasourceMock)
                                     .anyTimes();
PowerMock.expectNew(InitialContext.class).andReturn((InitialContext)contextMock);


        // run the mock
        PowerMock.replayAll();

问题:模拟不适用于数据源,它始终为空,但是 InitialContext 的模拟正在工作。

最佳答案

如果您想让 PowerMock.replayAll 工作,我认为您需要使用 PowerMock.createMock 而不是 EasyMock.createMock

关于java - 模拟 jdbc 数据源时遇到的困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10538060/

相关文章:

java - 如何在程序中仅打印斜杠 "/"之前的字母?

java - 用于访问 LinkedIn 数据的 Spring Boot 应用程序

c# - 单元测试使用外部 dll 的方法

php - 在 PHPUnit 中实现给定接口(interface)的模拟对象上的未定义方法?

java - EasyMock:将中间随时与严格模拟结合起来

java - 每个测试用例的代码覆盖率库

java - 如何修复错误 :Execution failed for task ':android:processDebugResources' ?

spring - 如何使用 Spring 测试模拟的 JNDI 数据源?

java - EasyMock 中未找到 Mock 功能

java - 在测试类中模拟私有(private)静态最终变量