java - 您如何使用 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;
}
}
解决方案
好的,伙计,你这里有很多错误的东西。首先,您的列表没有被实例化为新列表,因此它们为空。
私人名单治疗;私人清单药物;私人清单过敏;
如果不执行诸如 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;
}
}
最后是单元测试结果......长话短说,学习如何实例化你的列表,下次你发布问题时包括所有的类是可能的......
推荐阅读
- bitbucket - Bitbucket-SCM-Collector 未获取任何数据
- android-studio - 资源编译失败
- ckeditor - 如何从我的ckeditor textarea底部删除“body”一词
- react-native - 如何循环 MapView 组件 API 并在 Array map 方法中获取多个 mapRef - 本机反应
- python - 在 Python Flask 中创建 CheckBox - Jinja 模板
- .net - Azure.Messaging.ServiceBus 中 ServiceBusConnectionStringBuilder 的等效项
- javascript - ApexCharts - 在运行时更新自定义变量、数组值
- php - 如何根据日期/时间在网页上创建自动更新?
- html - 在 iPad 上,只要“s”或“c”后跟“t”或“p”,就会呈现奇怪的拱形
- r - 如何匹配 R 中函数参数的多种组合?