0

我目前正在为我的医院管理系统进行 JUnit 测试。但是当尝试检查JUnit测试中的insertDoctor方法的布尔值时出现空点异常。那点Statement stmt=con.createStatement。我附上了下面的所有代码。请检查一下。

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));
    }
}

在此处输入图像描述


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;                       
    }
}
4

1 回答 1

1
Statement stmt = con.createStatement();

这里 con 为空。现在 con 的值在构造函数中设置。它说

con = DBConnector.getConnection();

因此,DBConnector.getConnection() 肯定返回 null。您必须在 Junit 中实例化 DBConnector()。提供有关 DBConnector 的更多信息

于 2012-08-30T18:36:36.123 回答