【问题标题】:Creating a test for a method in Java DAO class在 Java DAO 类中为方法创建测试
【发布时间】:2021-10-29 15:29:15
【问题描述】:

对于我在 InteliJ 中创建的以下 Java 类 DAO,我需要创建一个测试:

“返回测试 parkId 1 的两个预留。”

我需要帮助编写逻辑本身以进行可能的测试

方法如下:

@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;
}

【问题讨论】:

  • parkId 在您的代码中的什么位置?我认为 parkId 概念没有任何逻辑。
  • 这是一个有多个DAO方法连接到SQL表的项目。如果我提供 Park DAO 的逻辑和 Park 的表列会有帮助吗?
  • 不,不是。你写了"Returns two reservations for test parkId 1.",我的问题是这个parkId在你展示的代码中与哪里相关?我使用 ID 什么也看不到。我可以为您提供该方法的测试,但我不理解您的说法。
  • 是的,我很抱歉。我错误地编写了 Select 语句。我应该加入 4 张桌子,其中一张是公园桌子。我现在能够想出这个测试。感谢您的跟进。
  • 那么请写下你是如何做到的,并接受它作为正确的答案,以便其他人可以从中受益。谢谢!

标签: java unit-testing junit


【解决方案1】:

正确的 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;
}

我尝试创建的正确测试是:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-27
    相关资源
    最近更新 更多