Соединение с базой данных во время теста JUnit4 - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь создать тесты для своего класса progressBar, но не могу получить доступ к базе данных MySQL стандартным способом.Как мне следует создать соединение с БД в тестах?

public class progressBarTest {

@Resource(name = "jdbc/movie_user_database")
private static DataSource dataSource;

@BeforeClass
public static void setUpClass() throws Exception {
    MovieDatabaseUtil.getInstance().setDataSource(dataSource);
    System.out.println("DataSource created!");

}

@AfterClass
public static void tearDownClass() throws Exception {

}


@Test
public void getMovies() {
    List<Movie> movies = MovieDatabaseUtil.getInstance().getMovies();
    for (Movie m : movies
    ) {
        System.out.println(m.getTitle());
    }
}


@Test
public void progressCalculatorMovies() {
    ProgressBar progressBar = new ProgressBar();
    assertEquals(30, progressBar.progressCalculatorMovies());
}

}

Конечно, после запуска у меня появляется исключение NullPointerException.Я добавил несколько записей в базу данных перед запуском теста.

1 Ответ

0 голосов
/ 11 октября 2018

Вы должны смоделировать соединение и не пытаться проверить соединение напрямую.Пересмешка и заглушка позволяют лучше тестировать тестируемый класс и не отвлекаться на проблемы с подключением к базе данных.Это также позволяет вам тестировать без перебора реальных записей в базе данных.

Я настоятельно рекомендую Mockito (https://site.mockito.org/) framework) в качестве инструмента для насмешки таких интерфейсов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...