JUnit4测试期间与数据库的连接

时间:2018-10-11 14:10:06

标签: java mysql database junit4

我正在尝试为我的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。我在运行测试之前向db添加了一些记录。

2 个答案:

答案 0 :(得分:1)

您应该模拟连接,而不要尝试直接测试连接。通过模拟和存根可以更好地测试被测类,而不会因数据库连接问题而分心。它还允许您进行测试,而不会浪费实际的数据库条目。

我强烈推荐Mockito(https://site.mockito.org/)框架作为模拟此类接口的工具。

答案 1 :(得分:0)

如果您打算编写良好的单元测试,则需要模拟外部依赖项。

您可以检查模拟库中的数据库连接,网络连接单元测试。

Here您可以进一步阅读