How to run JUnit 5 test cases in a class

125 Views Asked by At

On my common sense, below figure should display 6/6 instead of 1/6 and green arrow on the first test case. What should I do next?

enter image description here

package space.bumtiger.test.reposi;

import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;

import java.time.LocalDate;
import java.time.Month;
import java.util.Collection;
import java.util.stream.StreamSupport;

import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.data.jdbc.DataJdbcTest;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;

import space.bumtiger.test.model.Movie;

@DataJdbcTest
@DisplayName("H2 database movie table operations")
public class MovieRepositoryTest {

    @Autowired
    private MovieRepository repository;

    @Test
    @DisplayName("movie saved OK")
    void save() {
        // Arrange
        var movie = new Movie();
        movie.setName("WWII");
        movie.setGenera("War");
        movie.setReleaseDate(LocalDate.of(2009, Month.NOVEMBER, 10));

        // Act
        var savedMovie = repository.save(movie);

        // Assert
        assertNotNull(savedMovie);
        assertThat(savedMovie.getId()).isNotEqualTo(null);
    }

    @Test
    @DisplayName("movie list read OK")
    void fetchAll() {
        // Arrange
        var movie = new Movie();
        movie.setName("WWII");
        movie.setGenera("War");
        movie.setReleaseDate(LocalDate.of(2009, Month.NOVEMBER, 10));
        repository.save(movie);

        movie = new Movie();
        movie.setName("WWII");
        movie.setGenera("War");
        movie.setReleaseDate(LocalDate.of(2009, Month.NOVEMBER, 10));
        repository.save(movie);

        // act
        Iterable<Movie> movies = repository.findAll();

        // Assert 1
        assertNotNull(movies);

        var iter = movies.iterator();
        int count = 0;
        while (iter.hasNext()) {
            iter.next();
            count++;
        }

        // Assert 2
        assertThat(count).isEqualTo(1);
    }

    @Test
    @DisplayName("genera movie read OK")
    void findRomanceMovie() {
        // arrange
        var movie = new Movie();
        movie.setName("WWII");
        String genera = "역사";
        movie.setGenera(genera);
        var relDate = LocalDate.of(2009, Month.NOVEMBER, 10);
        movie.setReleaseDate(relDate);
        repository.save(movie);
        
        movie = new Movie();
        movie.setName("Romio and Julliet");
        movie.setGenera("Romance");
        movie.setReleaseDate(relDate);
        repository.save(movie); 
        
        // act
        var romances = repository.findByGenera("Romance");
        
        // assert
        assertNotNull(romances);
        assertThat(romances.size()).isEqualTo(1);
    }
    
    @Test
    @DisplayName("movie deleted OK")
    void deleteMovie() {
        // arrange
        var movie = new Movie();
        movie.setName("WWII");
        String genera = "War";
        movie.setGenera(genera);
        var relDate = LocalDate.of(2009, Month.NOVEMBER, 10);
        movie.setReleaseDate(relDate);
        Movie firstMovie = repository.save(movie);
        
        movie = new Movie();
        movie.setName("WWII");
        movie.setGenera(genera);
        movie.setReleaseDate(relDate);
        repository.save(movie); // save movie again
        
        // act
        repository.delete(firstMovie);
        
        // assert
        var optionalMovie = repository.findById(firstMovie.getId());
        assertTrue(optionalMovie.isEmpty());
        
        int count = 0;
        var movies = repository.findAll();
        var iter = movies.iterator();
        while (iter.hasNext()) {
            count++;
        }
        assertThat(count).isEqualTo(10);
    }

    @Test
    @DisplayName("movie genera updated OK")
    void updateMovie() {
        // arrange
        var movie = new Movie();
        movie.setName("WWII");
        String genera = "War";
        movie.setGenera(genera);
        var relDate = LocalDate.of(2009, Month.NOVEMBER, 10);
        movie.setReleaseDate(relDate);
        repository.save(movie);
        var foundMovie = repository.findById(movie.getId());
        
        // act
        String newGenere = "역사";
        foundMovie.ifPresent(m -> m.setGenera(newGenere));
        repository.save(foundMovie.get());
        foundMovie = repository.findById(movie.getId());
        
        // assert
        assertNotNull(foundMovie);
        assertThat(foundMovie.get().getGenera()).isEqualTo(newGenere);
        assertNotEquals(movie.getGenera(), foundMovie.get().getGenera());
    }
    
    @Test
    @DisplayName("movie found by ID OK")
    void findMovieById() {
        // Arrange
        var movie = new Movie();
        movie.setName("WWII");
        String genera = "War";
        movie.setGenera(genera);
        var relDate = LocalDate.of(2009, Month.NOVEMBER, 10);
        movie.setReleaseDate(relDate);
        var savedMovie = repository.save(movie);
        
        // Act
        var foundMovie = repository.findById(savedMovie.getId());
        
        // Assert
        assertNotNull(foundMovie);
        Movie fMovie = foundMovie.isPresent() ? foundMovie.get() : null;
        assertThat(fMovie.getGenera()).isEqualTo(genera);
        assertThat(fMovie.getReleaseDate()).isAfter(relDate.minusDays(1L));
    }

}

pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.0.5</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>space.bumtiger.test</groupId>
    <artifactId>spring-jdbc-junit</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>spring-jdbc-junit</name>
    <description>Demo project for thymeleaf layout example</description>
    <properties>
        <java.version>17</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>
0

There are 0 best solutions below