EasyMock、Mock、またはMockitoを使用してjavaで次の関数をテストします。 leerCantPueblos()関数を呼び出すと、クエリ( "SELECT conarpueblos()")が実行されることをテストします。Javaでmockitoを使用してSQLクエリをテストする際のエラー
private void leerCantPueblos(){
cantPueblosBD = leerBD.cantidadPueblos();
try {
while(cantPueblosBD.next()){
CANTIDADPUEBLOS = cantPueblosBD.getInt("contarpueblos");
}
} catch (SQLException e) {e.printStackTrace();}
}
この関数は、次の関数であるcantidadPueblos()を呼び出します。
public ResultSet cantidadPueblos() {
try {
sentencia = conexion.createStatement();
ResultSet cantidadPueblos = sentencia.executeQuery("SELECT contarpueblos()");
return cantidadPueblos;
} catch (SQLException e) {}
return null;
}
私は次のJUnitテストをしてみてくださいしかし、NullPointerExceptionが
package tests;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import org.easymock.Mock;
import org.junit.Before;
import org.junit.Test;
import org.mockito.InjectMocks;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import server.ConexionBD;
public class TestBD {
@InjectMocks
ConexionBD conexionDB;
@Mock
Connection conexion;
@Mock
Statement sentencia;
@Before
public void setup() throws SQLException {
MockitoAnnotations.initMocks(this);
//Mockito.initMocks(this);
Mockito.when(conexion.createStatement()).thenReturn(sentencia);
}
@Test
public void cantidadPueblos_shouldExecuteQuery() throws SQLException {
conexionDB.cantidadPueblos();
Mockito.verify(sentencia).executeQuery("SELECT contarpueblos()");
}
}
次の行は失敗スロー:
Mockito.when(conexion.createStatement()).thenReturn(sentencia);
conexionでcreateStatementが呼び出されたときにsentenciaが返されますが、sentenciaは決して初期化されません。それはヌルです! –
そして、私はどのように初期化できますか?sentencia = null?最初に文を作成する必要がありますか?私はJUnitを新しくしています。@ RahulSharma –
テストの完全なコードを追加できますか?すなわち、クラス宣言、インポート – Evgeny