用Mockito模拟静态方法我写了一家工厂来生产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作为测试用例。有一个好的方法来模拟/验证这个特定的用例吗?
3 回答
www说
TA贡献1775条经验 获得超8个赞
@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(...);
}
慕无忌1623718
TA贡献1744条经验 获得超4个赞
public class Slf4jMdcWrapper {
public static final Slf4jMdcWrapper SINGLETON = new Slf4jMdcWrapper();
public String myApisToTheSaticMethodsInSlf4jMdcStaticUtilityClass() {
return MDC.getWhateverIWant();
}}public class SomeClassUnderTest {
final Slf4jMdcWrapper myMockableObject;
/** constructor used by CDI or whatever real life use case */
public myClassUnderTestContructor() {
this.myMockableObject = Slf4jMdcWrapper.SINGLETON;
}
/** constructor used in tests*/
myClassUnderTestContructor(Slf4jMdcWrapper myMock) {
this.myMockableObject = myMock;
}}添加回答
举报
0/150
提交
取消
