2015-07-21 1 views
1

Требования: Применять несколько авторов, используя один из компонентов из Java Collection Framework. Требуется одна книга с изображением isbn и Коллекция авторов. JUnit: Руководство для testValidate: проверьте, по крайней мере, два случая (один случай, когда свойства книги содержат правильные типы данных и не являются пустыми и не имеют нулевого значения, в том случае, когда они этого не делают). Руководство для testEquals: проверьте, по крайней мере, два случая (один случай, когда авторы и isbn совпадают, в том случае, если они не соответствуют). Испытайте по крайней мере двух авторов. Мой учитель сказал мне: testEquals вам нужно добавить isbn и двух авторов. Создайте ArrayList. Добавьте к нему двух авторов. Создайте объект Book и добавьте экземпляр ArrayList и isbn. Я думаю, что это то, что я сделал, авторы печатают, но ISBN - нет. Я полный новичок, и я в недоумении! Может ли кто-нибудь помочь?bookTest.java распечатывает авторский массивList, но не isbn

EDIT/ADDITION Я получил ISBN для печати, но это только печать второго isbn, который у меня есть. Что мне нужно изменить, чтобы заставить их печатать? Или это имеет значение?

Вот результат:

Testsuite: library.domain.BookTest 
equals 
Author List: [Bob Smith, Jane Doe] 
ISBN: 67890 
validate 
Author List: [Bob Smith, Jane Doe] 
ISBN: 67890 
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.23 sec 

------------- Standard Output --------------- 
equals 
Author List: [Bob Smith, Jane Doe] 
ISBN: 67890 
validate 
Author List: [Bob Smith, Jane Doe] 
ISBN: 67890 
------------- ---------------- --------------- 
test: 
Deleting: /var/folders/k7/wpgy3lw91171qxlzt4pj0cfh0000gn/T/TEST-library.domain.BookTest.xml 
BUILD SUCCESSFUL (total time: 1 second) 

Вот моя новая страница:

NEW BookTest.java

package library.domain; 

import java.util.ArrayList; 
import static org.junit.Assert.assertEquals; 
import org.junit.Test; 

public class BookTest { 

    private ArrayList<String> authorList = new ArrayList<>(); 

    @Test 
    public void testEquals()    //test Equals() for accuracy 
    { 
     System.out.println("equals"); 
     authorList.add("Bob Smith"); 
     Book book = new Book("12345", authorList); 
     assertEquals("expected true", true, book.equals(book)); 
     authorList.add("Jane Doe"); 
     book = new Book("67890", authorList); 
     assertEquals("expected true", true, book.equals(book)); 
     System.out.println("Author List: " + authorList); 
     System.out.println("ISBN: " + book.getIsbn()); 
    } 

    @Test 
    public void testValidate()   //test Validate() for accuracy 
    { 
     System.out.println("validate"); 
     authorList.add("Bob Smith"); 
     Book book = new Book("12345", authorList); 
     assertEquals("expected true", true, book.validate()); 
     authorList.add("Jane Doe"); 
     book = new Book("67890", authorList); 
     assertEquals("expected true", true, book.validate()); 
     System.out.println("Author List: " + authorList); 
     System.out.println("ISBN: " + book.getIsbn()); 
    } 
} 

Book.java

package library.domain; 

import java.util.ArrayList; 
import java.util.Objects; 

public class Book { 

    private String isbn; 
    private ArrayList<String> authorList; 

    public Book(String isbn, ArrayList<String> authorList) 
    { 
     this.isbn = isbn; 
     this.authorList = authorList; 
    } 

    public String getIsbn()    //access to isbn and manages next value 
    { 
     return isbn; 
    } 

    public void setIsbn(String isbn)   //assigns the input isbn to the data member isbn 
    { 
     this.isbn = isbn; 
    } 
//assigns the input author to the data member author 

    public ArrayList<String> getAuthorList() 
    { 
     return authorList; 
    } 

    public void setAuthorList(ArrayList<String> authorList) 
    { 
     this.authorList = authorList; 
    } 

    @Override 
    public boolean equals(Object obj)   //checks equality of two objects - true if same, false if different 
    { 
     if (this == obj) { 
      return true; 
     } 
     if (!(obj instanceof Book)) { 
      return false; 
     } 

     Book book = (Book) obj; 
     if (!this.isbn.equals(book.isbn)) { 
      return false; 
     } 
     if (!this.authorList.equals(book.authorList)) { 
      return false; 
     } 
     return true; 
    } 

    @Override 
    public int hashCode()   //override hash 
    { 
     int hash = 7; 
     hash = 97 * hash + Objects.hashCode(this.authorList); 
     hash = 97 * hash + Objects.hashCode(this.isbn); 
     return hash; 
    } 

    public boolean validate()   //validate isbn and author not null 
    { 
     if (isbn == null || isbn.equals("")) { 
      return false; 
     } 
     if (authorList == null || authorList.equals("")) { 
      return false; 
     } 
     { 
      return true; 
     } 
    } 
} 

BookTest.java

package library.domain; 

import java.util.ArrayList; 
import static org.junit.Assert.assertEquals; 
import org.junit.Test; 

public class BookTest { 

    private ArrayList<String> authorList = new ArrayList<>(); 
    private String isbn; 

    @Test 
    public void testEquals()    //test Equals() for accuracy 
    { 
     System.out.println("equals"); 
     authorList.add("Bob Smith"); 
     authorList.add("Jane Doe"); 
     Book book = new Book("12345", authorList); 
     assertEquals("expected true", true, book.equals(book)); 
     System.out.println("Author List: " + authorList); 
     System.out.println("ISBN: " + isbn); 
    } 

    @Test 
    public void testValidate()   //test Validate() for accuracy 
    { 
     System.out.println("validate"); 
     authorList.add("Bob Smith"); 
     authorList.add("Jane Doe"); 
     Book book = new Book("12345", authorList); 
     assertEquals("expected true", true, book.validate()); 
     System.out.println("Author List: " + authorList); 
     System.out.println("ISBN: " + isbn); 
    } 
} 
+0

'isbn' доступен в классе' book' и 'authorList' в текущем классе. – Satya

+0

, чтобы сделать комментарий @Satya более ясным: у вас есть локальная переменная с именем 'isbn', но вы не ставите значение. Вы должны удалить его и вместо этого вызвать' book.getIsbn() '. – havogt

+0

'isbn' не инициализируется в классе' BookTest' – Rakesh

ответ

0

в ISBN тестового класса является локальным переменным, и вы не устанавливать какое-либо значения для того же. Для того, чтобы проверить, если объект создается правильно, попробуйте выполнить печать book.getAuthorList() и book.getIsbn()

+0

Это сработало! Спасибо SOOOO MUCH! Теперь на следующую часть моего задания. – user2719471

0

Book book = new Book("12345", authorList);

Здесь вы устанавливаете значение isbn доступна в Book классе.

System.out.println("ISBN: " + isbn); 

Но здесь вы пытаетесь распечатать isbn, который присутствует в текущем классе. Поэтому он не печатает никаких значений. Поскольку вы не передаете ему никакой ценности.

Для значения печатной isbn, доступны в Book класса записи

System.out.println("ISBN: " + book.getIsbn()); 


    System.out.println("Author List: " + authorList); 

Здесь также authorList является локальной переменной. Для печати значение authorList доступно в Book классе wirte

System.out.println("Author List: " + book.authorList()); 
+0

Я изменил для печати book.isbn и получил ошибки: testEquals (library.domain.BookTest): \t Неискусственный исходный код - isbn имеет личный доступ в library.domain.Book – user2719471

+0

Какая ошибка? – Satya

+0

Я обновил свой ответ. вызовите 'book.getIsbn()' и 'book.authorList()'. поскольку 'isbn' является' private' переменной. поэтому мы не можем получить доступ за пределами класса, например 'book.isbn'. – Satya

0

В BookTest вы распечатав значение в ISBN объеме BookTest. Вы инициализируетесь его в BookTest поэтому любые звонки на номер ISBN будут относиться к глобальному переменному

private String isbn; 

Вам нужно распечатать ISBN поле объекта Book.

System.out.println("ISBN: " + book.getIsbn()); 

У вас был метод получения, вы просто забыли его использовать.

0

При обращении к ISBN и authorList вы должны использовать их методы получения. В вашем тесте нет объекта String с именем ISBN. Вместо того, чтобы использовать book.getIsbn();

Некоторые другие вещи:

В методе validate(); authorList - это List, а не String, поэтому authorList.equals("") никогда не вернется. Вы должны сделать что-то вроде authorList.size() == 0. Также return true не должен находиться в пределах {}.

Также вы не должны просто пытаться распечатать список (System.out.println("Author List: " + authorList);). Вы можете получить очень неожиданные результаты.

Смежные вопросы