当前位置: 首页 > 知识库问答 >
问题:

JUnit应为:但为:错误-理解JUnit

颜祖鹤
2023-03-14

我是JUnit和测试的新手,并且对这个错误非常不知所措:预期:

我不知道为什么下面的测试根本不起作用。我看了其他类似的问题,但它们根本无助于我对测试的理解,让我完全不知道如何解决这个问题。

以下是测试:


public class OrderDAOTest {
    
    private final OrderDAO DAO = new OrderDAO();

@Before
    public void setup() {
        DBUtils.connect();
        DBUtils.getInstance().init("src/test/resources/sql-schema.sql", "src/test/resources/sql-data.sql");
    }

@Test
    public void testRead() {
        
        Long oId = 1L;
        Long iId = 1L;
        Long cId = 1L;
        String iName = "Call of Duty";
        double iCost = 25.99;
        Item item = new Item(iId, iName, iCost);
        Customer customer = new Customer(cId);
        CustomerDAO custDao = new CustomerDAO();
        customer = custDao.read(customer.getCustomerId());
        Order order = new Order();
        order.setOrderId(1L);
        order.setItem(item);
        order.setCustomer(customer);
        System.out.println(order);
        
        assertEquals(DAO.read(order.getOrderId()), order);
    }

这是带有OrderDAO类中返回的orderItemsFromResultSet()方法的read()方法:

java prettyprint-override">public Order orderItemsFromResultSet(ResultSet rs) throws SQLException {
        Long orderId = rs.getLong("fk_order_id");
        Long itemId = rs.getLong("item_id");
        String itemName = rs.getString("item_name");
        double itemCost = rs.getDouble("item_cost");
        Item item = new Item(itemId, itemName, itemCost);
        Order order = new Order(item, orderId);
        return order;
    }
    
    @Override
    public Order read(Long id) {
        try (Connection connection = DBUtils.getInstance().getConnection();
                PreparedStatement statement = connection.prepareStatement("SELECT * FROM order_items LEFT OUTER JOIN items ON items.item_id = order_items.fk_item_id WHERE fk_order_id = ?");) {
            statement.setLong(1, id);
            try (ResultSet resultSet = statement.executeQuery();) {
                resultSet.next();
                return orderItemsFromResultSet(resultSet);
            }
        } catch (Exception e) {
            LOGGER.debug(e);
            LOGGER.error(e.getMessage());
        }
        return null;
    }

我只是不理解它,需要帮助理解测试。


共有1个答案

郎飞龙
2023-03-14

您正在捕获所有异常,然后返回null。有两个可能的地方我会进一步调试。

  1. 检查连接是否工作正常

日志可能会在这里帮助您。

 类似资料: