简体   繁体   English

为 Java DAO 类中的方法创建测试

[英]Creating a test for a method in Java DAO class

For the following Java class DAO I created in InteliJ, I need to create a test that:对于我在 InteliJ 中创建的以下 Java 类 DAO,我需要创建一个测试:

"Returns two reservations for test parkId 1." “返回 test parkId 1 的两个预留。”

I need help with writing the logic itself for a possible test我需要帮助编写逻辑本身以进行可能的测试

Here is the method:这是方法:

@Override
public List<UpcomingReservation> getAllUpcomingReservations() {
    List<UpcomingReservation> reservations = new ArrayList<>();
    String sql = "SELECT * FROM reservation WHERE from_date >= CURRENT_DATE AND from_date <= CURRENT_DATE + 30";
    SqlRowSet results = jdbcTemplate.queryForRowSet(sql);
    while (results.next()) {
        reservations.add(mapRowToUpcomingReservation(results));
    }
    return reservations;
}

The correct SQL query was supposed to be as follows which would have included the parkID:正确的 SQL 查询应该如下所示,其中包含 parkID:

}
public List<Reservation> getAllReservationsNext30Days(int parkID) {
    List<Reservation> reservations = new ArrayList<>();
    String sql = "SELECT * FROM park JOIN campground ON park.park_id = campground.park_id JOIN site ON campground.campground_id = site.campground_id JOIN reservation ON site.site_id = reservation.site_id WHERE from_date >= CURRENT_DATE AND from_date <= CURRENT_DATE + 30";
    SqlRowSet results = jdbcTemplate.queryForRowSet(sql);
    while (results.next()) {
        reservations.add(mapRowToReservation(results));
    }
    return reservations;
}

And the correct test I was trying to create was:我试图创建的正确测试是:

@Test
public void getUpcomingReservations_Should_ReturnNext30DayReservations(){
    List<Reservation> upcomingReservation = dao.getAllReservationsNext30Days(1);
    assertEquals(2, upcomingReservation.size());
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM