有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

对象类型方法的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;
  }
}

共 (2) 个答案

  1. # 1 楼答案

    Junit中的assertEquals方法编写如下:

    static public void assertEquals(String message, Object expected, Object actual) {
        if (expected == null && actual == null) {
            return;
        }
        if (expected != null && expected.equals(actual)) {
            return;
        }
        failNotEquals(message, expected, actual);
    }
    

    static public void assertEquals(Object expected, Object actual) {
        assertEquals(null, expected, actual);
    }
    

    如您所见,它使用预期对象的equals方法进行比较,因此为了使其正常工作,您应该重写equals方法

  2. # 2 楼答案

    您需要正确定义Textbook.equals()方法。默认实现只是检查它是否是同一个对象。在您的情况下,检查字段内容是否相同是合理的。如果您使用的是IDE,那么应该有一个按钮来自动生成这样的equals()方法(例如,在Eclipse:Source中->;generate hashCode()和equals())