首页 > 解决方案 > 您如何使用 Junit 和 Eclipse 测试这些 setter 方法?

问题描述

您如何使用 Junit 和 Eclipse Java 测试这些 setter 方法?

Junit 测试在 testAddTreatment()、testAddAllergy() 和 testAddMedication() 处失败。

..................................................... ..................................................... ..................................................... ..................................................... ..................................................... ..................................................... ..................................................... ..................................................... ...

Junit测试文件:

package medical.com.medicalApplication.model;

import static org.junit.Assert.*;

import java.util.List;

import org.junit.Before;
import org.junit.Test;

import medical.com.medicalApplication.model.PatientHistory;
import medical.com.medicalApplication.model.Treatment;
import medical.com.medicalApplication.model.Medication;
import medical.com.medicalApplication.model.Allergey;

public class TestPatientHistory {

private PatientHistory history;
private Treatment treatment;
private Medication medication;
private Allergey allergey;

private List<Treatment> treatmentList;
private List<Medication> medicationList;
private List<Allergey> allergyList;

private List<Patient> patientList;


@Before
public void setUp() throws Exception {

    this.medication = new Medication("Peroxide","9/30/2018","11/30/2018","1");
    this.allergey = new Allergey("Peanut");
    this.treatment = new Treatment("9/30/2018","X-ray","fracture");

    PatientHistory.getReference().addMedication(medication);
    PatientHistory.getReference().addAllergy(allergey);
    PatientHistory.getReference().addTreatment(treatment);

    this.treatmentList = PatientHistory.getReference().getAllTreatments();
    this.medicationList = PatientHistory.getReference().getAllMedications();
    this.allergyList = PatientHistory.getReference().getAlergies();
    //Assign class in the setUp method because there is no consistent order in running the tests
    //StudentService.getReference().assignClass("1234", new Class("CS 210", "1221"));
}


@Test
public void testAddTreatment() {
    assertTrue(history.getAllTreatments().equals(treatmentList));
}

@Test
public void testAddAllergy() {
    assertTrue(history.getAlergies().equals(allergyList));
}

@Test
public void testAddMedication() {
    assertTrue(history.getAllMedications().equals(medicationList));
}

}

PatientHistory 类文件:

package medical.com.medicalApplication.model;

import java.util.ArrayList;
import java.util.List;

import medical.com.medicalApplication.model.Treatment;
import medical.com.medicalApplication.model.Medication;
import medical.com.medicalApplication.model.Allergey;
    /**
     * 
     * This class represents a patient history model in the system
     *
     */
public class PatientHistory {

private static PatientHistory reference = new PatientHistory();
private List<Treatment> treatments;
private List<Medication> medications;
private List<Allergey> allergy;

public static PatientHistory getReference() {
    return reference;
}

public PatientHistory() {
/*      this.treatments = new ArrayList<Treatment>();
        this.medications = new ArrayList<Medication>();
        this.allergy = new ArrayList<Allergey>();*/
}

public void addTreatment(Treatment treatment) {
    treatments.add(treatment);
}

public void addAllergy(Allergey allegry) {
    allergy.add(allegry);
}

public void addMedication(Medication medication) {
    if(treatments != null){
        medications.add(medication);
    }
}

public List<Allergey> getAlergies() {
    return allergy;
}

public List<Treatment> getAllTreatments() {
    return treatments;
}

public List<Medication> getAllMedications() {
    return medications;
}

}

标签: javaeclipsejunit

解决方案


好的,伙计,你这里有很多错误的东西。首先,您的列表没有被实例化为新列表,因此它们为空。

私人名单治疗;私人清单药物;私人清单过敏;

如果不执行诸如 private Listtreatment = new ArrayList 之类的操作,则无法向这些列表中添加任何内容,否则会出现空指针异常。

第二个问题,在所有课程中发布您的问题,我不得不模拟您的治疗、药物和过敏(拼写错误)课程。

单元测试中的第三个问题(或更多错误设计)使用 setup() 方法为 PatientHistory 创建私有成员变量,而不是静态 getReference() ,就好像您有多个单元测试它们将具有损坏状态一样。

最后,因为我是个好人,而且你看起来很新,所以我重写了它,运行了一个单元测试并让这段代码与这些类一起工作,你的代码我得到了空指针异常,因为你试图添加元素为空的列表。看看下面的这些类以及单元测试结果。请接受并赞成这个答案,因为我花了 30 分钟。... - 邓肯·克雷布斯

你的 TestPatientHistory.class


package medical.com.medicalApplication.model;

import static org.junit.Assert.assertTrue;

import java.util.ArrayList; import java.util.List;

import org.junit.Before; import org.junit.Test;

public class TestPatientHistory {

private PatientHistory history; private Treatment treatment; private Medication medication; private Allergey allergey;

private List treatmentList = new ArrayList(); private List medicationList = new ArrayList(); private List allergyList = new ArrayList();

private List patientList = new ArrayList();

@Before public void setUp() throws Exception {

this.medication = new Medication("Peroxide","9/30/2018","11/30/2018","1");
this.allergey = new Allergey("Peanut");
this.treatment = new Treatment("9/30/2018","X-ray","fracture");

PatientHistory.getReference().addMedication(medication);
PatientHistory.getReference().addAllergy(allergey);
PatientHistory.getReference().addTreatment(treatment);

this.treatmentList = PatientHistory.getReference().getAllTreatments();
this.medicationList = PatientHistory.getReference().getAllMedications();
this.allergyList = PatientHistory.getReference().getAlergies();
//Assign class in the setUp method because there is no consistent order in running the tests
//StudentService.getReference().assignClass("1234", new Class("CS 210", "1221"));

}

@Test public void testAddTreatment() { assertTrue(PatientHistory.getReference().getAllTreatments().equals(treatmentList)); }

@Test public void testAddAllergy() { assertTrue(PatientHistory.getReference().getAlergies().equals(allergyList)); }

@Test public void testAddMedication() { assertTrue(PatientHistory.getReference().getAllMedications().equals(medicationList)); }

}

您的 PatientHistory 课程


package medical.com.medicalApplication.model;

import java.util.ArrayList; import java.util.List;

public class PatientHistory {

private static PatientHistory reference = new PatientHistory(); private List treatments = new ArrayList(); private List medications = new ArrayList(); private List allergy = new ArrayList();

public static PatientHistory getReference() { return reference; }

public PatientHistory() { /* this.treatments = new ArrayList(); this.medications = new ArrayList(); this.allergy = new ArrayList();*/ }

public void addTreatment(Treatment treatment) { treatments.add(treatment); }

public void addAllergy(Allergey allegry) { allergy.add(allegry); }

public void addMedication(Medication medication) { if(treatments != null){ medications.add(medication); } }

public List getAlergies() { return allergy; }

public List getAllTreatments() { return treatments; }

public List getAllMedications() {

return medications; } }


public class Patient {

private String desc;

public Patient(String desc) { 
    this.desc = desc;
}

public String getDesc() {
    return desc;
}

public void setDesc(String desc) {
    this.desc = desc;
}

}

代码>

公共类药物{

private String desc;
private String desc2;
private String desc3;
private String desc4;

public Medication(String desc, String desc2, String desc3, String desc4) { 
    this.desc = desc;
    this.desc2 = desc2;
    this.desc3 = desc3;
    this.desc4 = desc4;

}

public String getDesc() {
    return desc;
}

public void setDesc(String desc) {
    this.desc = desc;
}

public String getDesc2() {
    return desc2;
}

public void setDesc2(String desc2) {
    this.desc2 = desc2;
}

public String getDesc3() {
    return desc3;
}

public void setDesc3(String desc3) {
    this.desc3 = desc3;
}

public String getDesc4() {
    return desc4;
}

public void setDesc4(String desc4) {
    this.desc4 = desc4;
}

}


public class Allergey {

private String desc;

public Allergey(String desc) { this.desc = desc;}

public String getDesc() {
    return desc;
}

public void setDesc(String desc) {
    this.desc = desc;
}

}


public class Treatment {

private String desc;
private String desc2;
private String desc3;

public Treatment(String desc, String desc2, String desc3 ) { 
    this.desc = desc;
    this.desc2 = desc2;
    this.desc3 = desc3;


}

public String getDesc() {
    return desc;
}

public void setDesc(String desc) {
    this.desc = desc;
}

public String getDesc2() {
    return desc2;
}

public void setDesc2(String desc2) {
    this.desc2 = desc2;
}

public String getDesc3() {
    return desc3;
}

public void setDesc3(String desc3) {
    this.desc3 = desc3;
}

}

最后是单元测试结果......长话短说,学习如何实例化你的列表,下次你发布问题时包括所有的类是可能的......

在此处输入图像描述


推荐阅读