对象类型方法的java assertequal
我试图使用Junit测试用例为Course
类中的GetTeextBook()
创建一个测试方法。请注意GetTextBook()
是Textbook
对象的类型,但是当我在方法testGetTextBook()
中运行CourseTestCase1
类时,总是会失败
有什么建议吗
课程测试案例1
public class CourseTestCase1 {
private Course course=new Course(101, "Software Engineering");
@Test
public void testGetTextBook() {
Textbook testbook=new Textbook(700, "Data Base System", "Ramez ELmasri",2011);
assertEquals(testbook,course.getTextbook());
}
@Test
public void testGetCourseCode() {
assertEquals(101,course.getCourseCode());
}
@Test
public void testGetName() {
assertEquals("Software Engineering",course.getName());
}
@Test
public void testToString() {
testGetCourseCode();
testGetName();
}
}
课程
public class Course {
private int courseCode;
private String courseName;
private Textbook textbook;
private Semester semestr;
public Course() {
this.courseCode = 0;
this.courseName = null;
this.semestr = null;
this.textbook = null;
}
public Course(int courseCode, String courseName) {
this.courseCode = courseCode;
this.courseName = courseName;
semestr = null;
textbook = null;
}
public Textbook getTextbook() {
return textbook;
}
}
教科书
public class Textbook {
private int isbn;
private String title, authors;
private int publicationYear;
private TextbookCopy tbcopy;
public Textbook() {
isbn = 0;
title = null;
authors = null;
publicationYear = 0;
}
public Textbook(int isbn, String title, String authors, int publicationYear) {
this.isbn = isbn;
this.title = title;
this.authors = authors;
this.publicationYear = publicationYear;
}
public Textbook(int isbn, String title, String authors, int publicationYear,
String publisher, String distributor, double purchasePrice) {
this.isbn = isbn;
this.title = title;
this.authors = authors;
this.publicationYear = publicationYear;
}
public String getTitle() {
return title;
}
public int getPublicationYear() {
return publicationYear;
}
public String getAuthors() {
return authors;
}
public Textbook getBook() {
return this;
}
public int getISBN() {
return isbn;
}
public String getCopy() {
return Integer.toString(tbcopy.numbersOfCopy);
}
public void USwoltextbook(int isbn) {
}
public void assignNewBook() {
}
public Textbook createNewTextBook(String info) {
return null;
}
}
# 1 楼答案
Junit中的assertEquals方法编写如下:
及
如您所见,它使用预期对象的equals方法进行比较,因此为了使其正常工作,您应该重写
equals
方法# 2 楼答案
您需要正确定义
Textbook.equals()
方法。默认实现只是检查它是否是同一个对象。在您的情况下,检查字段内容是否相同是合理的。如果您使用的是IDE,那么应该有一个按钮来自动生成这样的equals()
方法(例如,在Eclipse:Source中->;generate hashCode()和equals())