亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

春季啟動應用程序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 關注
  • 131 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號