gpt4 book ai didi

java - Junit 测试空指针异常

转载 作者:行者123 更新时间:2023-12-01 15:12:05 24 4
gpt4 key购买 nike

我目前正在为我的医院管理系统进行 JUnit 测试。但是当尝试检查 insertDoctor 方法的 boolean 值时,JUnit 测试中出现空点异常。那点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));
}
}
<小时/>

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

最佳答案

Statement stmt = con.createStatement();

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

con = DBConnector.getConnection();

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

关于java - Junit 测试空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12202771/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com