JUnit тестирует HashSet один-ко-многим - PullRequest
0 голосов
/ 15 марта 2019

Я пытаюсь научиться тестировать в Spring Boot.Я пытался протестировать свои модели, но потом столкнулся с NullPointer.Давайте посмотрим код.

Genre.java

public class Genre {

@Column(nullable = false)
@OneToMany(mappedBy = "genre", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private Set<Movie> movieSet;

public Integer getId() {
    return id;
}

public void setId(Integer id) {
    this.id = id;
}

public Set<Movie> getMovie() {
    return movieSet;
}

public void setMovie(Movie movie) {
    if (movieSet.size() == 0) {
        movieSet = new HashSet<>();
    }
    movieSet.add(movie);
}}

GenreTest.java

public class GenreTest {

@Test
public void IdGetterSetter() {
    Genre genre = new Genre();
    genre.setId(1);
    assertThat(genre.getId()).isEqualTo(1);

}

@Test
public void MovieGetterSetter(){

    Genre genre = new Genre();
    Movie movie = new Movie();
    genre.setMovie(movie);
    assertThat(genre.getMovie()).isEqualTo(movie);

}}

genre.setMovie(фильм) получает ошибку NullPointer.Что мне нужно сделать?Кстати, я тестирую свои функции получения и установки в одной и той же функции.Нужно ли разделять их или это нормально, использовать это так?Дайте мне некоторое мнение, пожалуйста.

1 Ответ

0 голосов
/ 15 марта 2019

Это:

public void setMovie(Movie movie) {
    if (movieSet.size() == 0) {
        movieSet = new HashSet<>();
    }
    movieSet.add(movie); 
}}

movieSet является унифицированным.

Вы либо хотите:

private Set<Movie> movieSet = new HashSet<>();

Или:

public void setMovie(Movie movie) {
    if (movieSet == null) {
        movieSet = new HashSet<>();
    }
    movieSet.add(movie); 
}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...