Я пытаюсь представить свою компанию тестами jUnit, но когда я пытаюсь создать тест для Соединения, он терпит неудачу. Да, я смотрю на это и обнаруживаю, что каждое соединение отличается, но когда я пытаюсь запросить то же самое с помощью двух «клонированных соединений», оно все равно не может это сделать.
Функция, которую я пытаюсь проверить:
public static Connection Create_DB_connection(String jdbc_class,String jdbc_url,String db_user,String db_pswrd,
java.util.Date wallDate,DateFormat wallDateFormat) throws Exception{
// <-- Create DB connection (JDBC)
System.out.println("Connecting to DB...");
DriverManager.setLoginTimeout(10);
Class.forName(jdbc_class);
Connection conn = DriverManager.getConnection(jdbc_url,db_user, db_pswrd);
System.out.println("Connected!");
System.out.println(wallDateFormat.format(wallDate));
System.out.println("");
// -->
return conn;
}
Контрольный пример:
import static org.junit.Assert.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
@Test
public void testMicroSoft() throws Exception {
java.util.Date wallDate = new java.util.Date();
DateFormat wallDateFormat = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
String jdbc_url = "jdbc:jtds:sqlserver://";
String db_user = "";
String db_pswrd="";
String jdbc_class="net.sourceforge.jtds.jdbc.Driver";
String sql = "select idd_apr_workflow from d_apr_ticket where idd_apr_workflow = -1;";
DriverManager.setLoginTimeout(10);
Class.forName(jdbc_class);
Connection conn = DriverManager.getConnection(jdbc_url,db_user, db_pswrd);
assertEquals(conn.prepareStatement(sql), Library1.Create_DB_connection(jdbc_class, jdbc_url, db_user, db_pswrd, wallDate, wallDateFormat).prepareStatement(sql));
}
@Test
public void testORA() throws Exception {
java.util.Date wallDate = new java.util.Date();
DateFormat wallDateFormat = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
String jdbc_url = "jdbc:oracle:thin:";
String db_user = "";
String db_pswrd="";
String jdbc_class="oracle.jdbc.OracleDriver";
String sql = "select AMT from F_FIN_PL_A where AMT = 52907;";
DriverManager.setLoginTimeout(10);
Class.forName(jdbc_class);
Connection conn = DriverManager.getConnection(jdbc_url,db_user, db_pswrd);
assertEquals(conn.prepareStatement(sql), Library1.Create_DB_connection(jdbc_class, jdbc_url, db_user, db_pswrd, wallDate, wallDateFormat).prepareStatement(sql));
}
@Test
public void testIQ() throws Exception {
java.util.Date wallDate = new java.util.Date();
DateFormat wallDateFormat = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
String jdbc_url = "jdbc:sqlanywhere:DatabaseName=";
String db_user = "";
String db_pswrd="";
String jdbc_class="sybase.jdbc4.sqlanywhere.IDriver";
// here sometimes should need change sql-s if existing one doesn't work anymore
String sql = "select CHANNEL_ID from K_PDI_JOB_LOG where CHANNEL_ID = 'e60e3645-3909-4f0f-9498-66dfb83a8463';";
DriverManager.setLoginTimeout(10);
Class.forName(jdbc_class);
Connection conn = DriverManager.getConnection(jdbc_url,db_user, db_pswrd);
assertEquals(conn.prepareStatement(sql), Library1.Create_DB_connection(jdbc_class, jdbc_url, db_user, db_pswrd, wallDate, wallDateFormat).prepareStatement(sql));
}
И код Test Suite, если вам нужно:
package Tests;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;
@RunWith(Suite.class)
@SuiteClasses({
Create_DB_connetion_TEST.class })
public class TestSuite {}
И код бегуна:
package Tests;
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
public class TestRunner {
public static void main(String[] args) {
Result result = JUnitCore.runClasses(TestSuite.class);
for(Failure failure : result.getFailures()) {
System.out.println(failure.toString());
}
System.out.println("Does code is error-free? Answer: " +
result.wasSuccessful());
}
}
Этот вывод у меня сейчас:
testORA (Tests.Create_DB_connetion_TEST): ожидается: но было:
testIQ (Tests.Create_DB_connetion_TEST): ожидается: но было:
testMicroSoft (Tests.Create_DB_connetion_TEST): ожидается: net.sourceforge.jtds.jdbc.JtdsPreparedStatement, но было: net.sourceforge.jtds.jdbc.JtdsPreparedStatement
Код не содержит ошибок? Ответ: ложь
Вывод хочу:
Код не содержит ошибок? Ответ: правда