我编写了一个工厂来生成 java.sql.Connection
对象:
public class MySQLDatabaseConnectionFactory implements DatabaseConnectionFactory {
@Override public Connection getConnection() {
try {
return DriverManager.getConnection(...);
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
我想验证传递给 DriverManager.getConnection
的参数,但我不知道如何模拟静态方法。我在测试用例中使用 JUnit 4 和 Mockito。有没有一种好方法来模拟/验证这个特定的用例?
最佳答案
使用PowerMockito在 Mockito 之上。
示例代码:
@RunWith(PowerMockRunner.class)
@PrepareForTest(DriverManager.class)
public class Mocker {
@Test
public void shouldVerifyParameters() throws Exception {
//given
PowerMockito.mockStatic(DriverManager.class);
BDDMockito.given(DriverManager.getConnection(...)).willReturn(...);
//when
sut.execute(); // System Under Test (sut)
//then
PowerMockito.verifyStatic();
DriverManager.getConnection(...);
}
更多信息:
关于java - 使用 Mockito 模拟静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57318375/