为了账号安全,请及时绑定邮箱和手机立即绑定

春季启动应用程序oneToMany关系中的assertTrue异常

春季启动应用程序oneToMany关系中的assertTrue异常

MMTTMM 2022-07-14 09:37:45
我有一个带有cooperator和student模型(等等)的弹簧启动应用程序。他们有来自合作者方面的@oneToMany 关系和来自学生方面的@ManyToOne合作者等级:@Entitypublic class Cooperator{    private Integer id;    public void setId(Integer value) {        this.id = value;    }    @Id    public Integer getId() {        return this.id;    }    private Set<Student> student;    @OneToMany(mappedBy="cooperator", cascade={CascadeType.ALL})    public Set<Student> getStudent() {       return this.student;    }    public void setStudent(Set<Student> students) {       this.student = students;    }    public void addStudent(Student student) {        try {            this.student.add(student);        }        catch(Exception e) {                this.student = new HashSet<Student>();            this.student.add(student);        }    }}学生班级:@Entitypublic class Student{    private String studentID;    public void setStudentID(String value) {       this.studentID = value;    }    @Id    public String getStudentID() {        return this.studentID;    }    private Cooperator cooperator;    @ManyToOne(optional=false)    public Cooperator getCooperator() {       return this.cooperator;    }    public void setCooperator(Cooperator cooperator) {       this.cooperator = cooperator;    }}我正在通过以下方式测试关系:    @Test    public void cooperatorStudent() {        String studentID = "260632353";        String firstname = "Saleh";        String lastname = "Bakhit";        Student student1 = service.createStudent(studentID, firstname, lastname, cooperator);        assertEquals(cooperator, student1.getCooperator());    }问题是 assertTrue 语句失败,即使cooperatorStudents实际上包含两个student对象。非常感谢任何关于为什么会这样的帮助。
查看完整描述

2 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

就我没有忽略任何事情而言,您不会在 test-method 中将学生对象添加到合作者中。


在您的测试方法中调用该addStudent()方法应该可以解决问题。


@Test

public void cooperatorStudent() {

    String studentID = "260632353";

    String firstname = "Saleh";

    String lastname = "Bakhit";

    Student student1 = service.createStudent(studentID, firstname, lastname, cooperator);

    assertEquals(cooperator, student1.getCooperator());


    studentID = "260632350";

    firstname = "testFirst";

    lastname = "testLast";

    Student student2 = service.createStudent(studentID, firstname, lastname, cooperator);

    assertEquals(cooperator, student2.getCooperator());


    cooperator.addStudent(student1);

    cooperator.addStudent(student2);


    Set<Student> cooperatorStudents = cooperator.getStudent();

    assertTrue(cooperatorStudents.contains(student1));

    assertTrue(cooperatorStudents.contains(student2));

}


查看完整回答
反对 回复 2022-07-14
?
互换的青春

TA贡献1797条经验 获得超6个赞

然后你想要比较对象,你必须覆盖“equals”和“hashcode”方法。默认情况下,每个类实例“对象”都是唯一的,尽管它们的字段相同。很好的解释:https ://dzone.com/articles/working-with-hashcode-and-equals-in-java


查看完整回答
反对 回复 2022-07-14
  • 2 回答
  • 0 关注
  • 105 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号