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)