JUnit测试一对多HashSet

时间:2019-03-15 16:49:15

标签: java jpa junit

我正在尝试学习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错误。我该怎么办?顺便说一句,我正在同一功能中测试我的getter和setter函数。我需要将它们分开还是可以这样使用吗?请给我一些意见。

1 个答案:

答案 0 :(得分:0)

此:

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); 
}}