Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 测试驱动程序Manager.getConnection与mockito的连接_Java_Junit_Mockito_Powermock_Easymock - Fatal编程技术网

Java 测试驱动程序Manager.getConnection与mockito的连接

Java 测试驱动程序Manager.getConnection与mockito的连接,java,junit,mockito,powermock,easymock,Java,Junit,Mockito,Powermock,Easymock,我在课堂上写的 public List<ClassRoom> getAllClassRooms() { List<ClassRoom> classRoomsList = new ArrayList<>(); String sqlStatement = "SELECT * FROM university.classrooms;"; try { Class.forName("org.postgresql.Driver");

我在课堂上写的

public List<ClassRoom> getAllClassRooms() {
    List<ClassRoom> classRoomsList = new ArrayList<>();
    String sqlStatement = "SELECT * FROM university.classrooms;";
    try {
        Class.forName("org.postgresql.Driver");
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }
    Connection connection = null;
    PreparedStatement statement = null;
    ResultSet resultSet = null;
    try {
        connection = DriverManager.getConnection("jdbc:postgresql://127.0.0.1:5432/Exam6", "postgres", "Navlanart1");
        try {
            statement = connection.prepareStatement(sqlStatement);
            try {
                resultSet = statement.executeQuery();
                while (resultSet.next()) {
                    ClassRoom classRoom = new ClassRoom(resultSet.getString("name"));
                    classRoomsList.add(classRoom);
                }
            } catch (SQLException e) {
            } finally {
                try {
                    resultSet.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                statement.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        try {
            connection.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    return classRoomsList;
}
}

但它不起作用

java.sql.SQLException: No suitable driver found for 
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at     com.kolosok.university.TestClassRoomDao.testGetAllClassRooms(TestClassRoomDao.java:58)
我读了很多关于类似假设的答案。但还是不能解决我的问题

我正在使用

postgresql-42.0.0.jre7.jar

mockito-all-1.10.19.jar

powermock-api-easymock-1.6.6.jar

powermock-core-1.6.6.jar

cglib-nodep-3.1.jar

javassist-3.12.1.GA.jar

objenesis-2.5.jar

powermock-api-mockito-1.6.6.jar

powermock-api-support-1.6.6.jar


easymock-3.4.jar

我认为问题可能是您没有使用PowerMockRunner运行它,因此没有遵守要使用的PowerMock扩展(如mockStatic)

尝试将
@RunWith(MockitoJUnitRunner.class)
更改为
@RunWith(PowerMockRunner.class)

编辑

您可能还需要初始化模拟。最简单的方法是在之前使用
@方法,类似

@之前
公共作废设置(){
initMocks(这个);
}

我认为问题可能是您没有使用PowerMockRunner来运行它,因此没有遵守要使用的PowerMock扩展(如mockStatic)

尝试将
@RunWith(MockitoJUnitRunner.class)
更改为
@RunWith(PowerMockRunner.class)

编辑

您可能还需要初始化模拟。最简单的方法是在
之前使用
@方法,类似

@之前
公共作废设置(){
initMocks(这个);
}

的可能副本的可能副本的可能副本我们很早就尝试过了,始终得到了这个-PowerMockRunner无法重新调整为类型OK。我已将@RunWith(MockitoJUnitRunner.class)更改为@RunWith(PowerMockRunner.class)。还是有同样的问题。不知道我做错了什么。下一步是修改PrepareForTest注释。您需要准备调用要模拟的对象的类,而不是模拟对象本身。所以,在这种情况下,您应该经常使用@PrepareForTest(nameOfDaoClass)Thnx。当我创建
@RunWith(PowerMockRunner.class)@PrepareForTest(ClassRoomDao.class)
-当(DriverManager.getConnection(anyString(),anyString(),anyString())。然后返回(mockConnection);
我读了一些,然后
更改mockStatic(DriverManager.class)
PowerMockito.mockStatic(DriverManager.class);
现在我在
行中得到了NullPointerExeption(mockConnection.prepareStatement(anyString())。然后返回(mockPreparedStatement);
我现在拥有的:1)我将所有jar从1.6.6降级到1.6.5(根据mockito常见问题解答,这是一个小错误)2)我有
@RunWith(PowerMockRunner.class)@PrepareForTest(ClassRoomDao.class)
然后在public void initMocks1(){MockitoAnnotations.initMocks(this);}和
mockStatic(DriverManager.class);
这两个组合中,当(DriverManager.getConnection(anyString(),anyString(),anyString()))。然后返回(mockConnection);很早就尝试过了,总是得到了这个结果-PowerMockRunner无法重新设置为类型OK。我已将@RunWith(MockitoJUnitRunner.class)更改为@RunWith(PowerMockRunner.class)。仍然有相同的问题。不知道我做错了什么。下一步是更改PrepareForTest注释。您需要准备调用要模拟的对象的类,而不是模拟的对象本身。因此,在这种情况下,您应该@PrepareForTest(nameOfDaoClass)Thnx很多。当我制作
@RunWith(PowerMockRunner.class)时@PrepareForTest(ClassRoomDao.class)
-我在(DriverManager.getConnection(anyString(),anyString(),anyString())。然后返回(mockConnection);。我读了一些,然后
更改mockStatic(DriverManager.class);
PowerMockito.mockStatic(DriverManager.class)
。现在我在
when(mockConnection.prepareStatement(anyString())。然后返回(mockPreparedStatement);
我现在拥有的:1)我将所有jar从1.6.6降级到1.6.5(根据mockito常见问题解答,这是一个小错误)2)我拥有
@RunWith(PowerMockRunner.class)@PrepareForTest(ClassRoomDao.class)
然后
@在public void initMocks1()之前{MockitoAnnotations.initMocks(this);}
mockStatic(DriverManager.class)在此组合中,当(DriverManager.getConnection(anyString(),anyString(),anyString())时,Iv在
行中获得了错误
org.mockito.exceptions.misusing.invalidUseofMatcherException
。然后返回(mockConnection)
java.sql.SQLException: No suitable driver found for 
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at     com.kolosok.university.TestClassRoomDao.testGetAllClassRooms(TestClassRoomDao.java:58)