JUnit4 测试期间与数据库的连接
Connection with Database during JUnit4 test
我正在尝试为我的 progressBar class 创建测试,但我无法以标准方式访问 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。我在 运行 测试之前向数据库添加了一些记录。
您应该模拟连接而不是尝试直接测试连接。模拟和存根允许您更好地测试被测 class,而不会因数据库连接问题而分心。它还允许您在不处理实际数据库条目的情况下进行测试。
我强烈推荐 Mockito (https://site.mockito.org/) 框架作为模拟此类接口的工具。
我正在尝试为我的 progressBar class 创建测试,但我无法以标准方式访问 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。我在 运行 测试之前向数据库添加了一些记录。
您应该模拟连接而不是尝试直接测试连接。模拟和存根允许您更好地测试被测 class,而不会因数据库连接问题而分心。它还允许您在不处理实际数据库条目的情况下进行测试。
我强烈推荐 Mockito (https://site.mockito.org/) 框架作为模拟此类接口的工具。