2012-08-30 2 views
0

В настоящее время я выполняю тест JUnit для своей системы администрирования в больнице. Но при попытке проверить логическое значение исключений Null Point метода метода InsertDoctor в JUnit Test. Эта точка Statement stmt = con.createStatement. Я приложил кодекс ниже. Pl проверить это.Junit Test Null Point Excception

public class JUnitTest extends TestCase { 
    private Connection con; 
    public JUnitTest(String testName) { 
     super(testName); 
     con=DBConnector.getConnection(); 
    } 

    @Override 
    protected void setUp() throws Exception { 
     super.setUp(); 
    } 

    @Override 
    protected void tearDown() throws Exception { 
     super.tearDown(); 
    } 
    // TODO add test methods here. The name must begin with 'test'. For example: 
    // public void testHello() {} 
    public void testdeltePatient() throws SQLException{ 

     Patients p=new Patients(); 
     assertEquals(true, p.removePatient(333)); 

    } 
    public void testdeleteDoctor() throws SQLException{ 

     Doctors d=new Doctors(); 
     d.setSpeciality("General"); 
     d.setSumOfQn("MBBS"); 
     d.setExp("3 Years"); 


     d.setDocId(678); 
     d.setEmpId(4344); 

     assertEquals(true, d.insertDoctor(d)); 
    } 
} 

enter image description here


public class Doctors extends Employee { 

    private int docId; 
    private String exp; 
    private String sumOfQn; 
    private int empId; 
    private String speciality; 
    private Connection con; 

    public String getSpeciality() { 
     return speciality; 
    } 

    public void setSpeciality(String speciality) { 
     this.speciality = speciality; 
    } 

    public Doctors() { 

     con = DBConnector.getConnection(); 
    } 

    public int getDocId() { 
     return docId; 
    } 

    public void setDocId(int docId) { 
     this.docId = docId; 
    } 

    public String getExp() { 
     return exp; 
    } 

    public void setExp(String exp) { 
     this.exp = exp; 
    } 

    public String getSumOfQn() { 
     return sumOfQn; 
    } 

    public void setSumOfQn(String sumOfQn) { 
     this.sumOfQn = sumOfQn; 
    } 

    @Override 
    public int getEmpId() { 
     return empId; 
    } 

    @Override 
    public void setEmpId(int empId) { 
     this.empId = empId; 
    } 

    public Connection getCon() { 
     return con; 
    } 

    public void setCon(Connection con) { 
     this.con = con; 
    } 

    public ResultSet getEmployeeId() throws SQLException { 

     ResultSet rs; 
     String query = "select * from employee"; 
     Statement stmt = con.createStatement(); 
     rs = stmt.executeQuery(query); 

     return rs; 

    } 

    public boolean insertDoctor(Doctors d) throws SQLException { 


     PreparedStatement ps; 
     boolean result = false; 
     **Statement stmt = con.createStatement();** 

     String query = "INSERT INTO doctors VALUES ('" + d.getDocId() + "','" + d.getSpeciality() + "','" + d.getExp() + "','" + d.getEmpId() + "',' " + d.getSumOfQn() + "')"; 
     ps = con.prepareStatement(query); 
     int res = ps.executeUpdate(); 
     if (res > 0) { 
      result = true; 
     } 

     return result;      
    } 
} 
+0

Похоже, что 'DBConnector.getConnection()' должен возвращать 'null' в' Doctors' ctor. –

+0

Соединение с базой данных работает, но junit только не работает .... –

+0

Попробуйте распечатать значение «con» прямо перед линией, выбрасывающей исключение нулевого указателя. Скорее всего, это значение равно null, и поэтому исключение возникает при попытке создать из него утверждение. – Sticks

ответ

1
Statement stmt = con.createStatement(); 

Здесь жулик равна нулю. Теперь значение con устанавливается в конструкторе. в котором говорится:

con = DBConnector.getConnection(); 

Так что определенно, DBConnector.getConnection() возвращает null. Вы должны создать экземпляр DBConnector() в Junit. Дайте дополнительную информацию о DBConnector

+0

Не могли бы вы объяснить? Как я могу объявить переменную con в Junit. –

+0

Сделайте каждую функцию самодостаточной. Поэтому вызов con = DBConnector.getConnection() внутри функции insertxxxxx –