用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
提交
取消