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

标签 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。我在运行测试之前向数据库添加了一些记录。

最佳答案

您应该模拟连接,而不是尝试直接测试连接。模拟和 stub 可以让您更好地测试被测类,而不会因数据库连接问题而分心。它还允许您进行测试,而无需修改实际的数据库条目。

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

关于java - JUnit4 测试期间与数据库的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52762224/

相关文章:

php - 将 mysql 结果显示为对象?

mysql - WooCommerce 优惠券如何存储在数据库中?

mysql - 导入MySQL中的csv

Javassist:ClassPool.makeClass() 的副作用?

java - AWT-EventQueue-0"java.lang.ArrayIndexOutOfBoundsException

java - 使用 Hibernate 更新查询性能

java - 工作线程在 Netty 中被阻塞

php - 使用meta_query进行精确的日期范围搜索

c# - 数据集表复制错误

python - SQL Alchemy 根据其他列的单元格中包含的值过滤行