DAOClass.makeDBConnection()方法返回Application Server(Jboss)中配置的数据源(使用查找)。需要为此方案实现junit测试用例。
使用Mockito,测试DAO方法如下。由于它无法找到数据源(如预期的那样),因此返回NullPointerException。如何处理NullPointerException并返回我在下面的代码中创建的连接?或者还有其他更好的单元测试框架来处理这种情况吗?
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection conn = DriverManager.getConnection("jdbc:sqlserver://DB:1433;DatabaseName=databasename", "userid", "password");
when(DAOClass.makeDBConnection()).thenReturn(conn);
答案 0 :(得分:0)
Mockito不能以你的方式模拟静态方法调用;它通过生成的子类(代理)动态覆盖所有方法来有效地工作。
您需要围绕要模拟的静态方法编写包装类,否则重构代码以避免静态调用,或者使用PowerMock等工具在运行时重写系统的字节码。