Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从'返回后,主线程停止;调用()';java:498_Java_Sql_Junit_Main - Fatal编程技术网

从'返回后,主线程停止;调用()';java:498

从'返回后,主线程停止;调用()';java:498,java,sql,junit,main,Java,Sql,Junit,Main,我收到以下错误:在运行JUnit测试后,在调试器控制台中,从Method.java:498处的“invoke()”返回后,线程main停止 方法的目的:在数据库中创建一行,如果是,则返回true 即使它通过了测试,也不会在数据库中创建行。 当我调试和观察mysql workbench旁边的变量时,我可以看出行已创建。在JUnit测试中,该方法似乎一直有效,直到它到达末尾。刚刚在数据库中创建的行消失了。调试器控制台如下所示: Thread main stopped at DAOIT.jav

我收到以下错误:在运行JUnit测试后,在调试器控制台中,从Method.java:498处的“invoke()”返回后,线程main停止

方法的目的:在数据库中创建一行,如果是,则返回true

即使它通过了测试,也不会在数据库中创建行。 当我调试和观察mysql workbench旁边的变量时,我可以看出行已创建。在JUnit测试中,该方法似乎一直有效,直到它到达末尾。刚刚在数据库中创建的行消失了。调试器控制台如下所示:

    Thread main stopped at DAOIT.java:111.
    User program running
    Breakpoint hit at line 360 in class DB.DAO by thread main.
    Thread main stopped at DAO.java:360.
    User program running
    Thread main stopped at DAO.java:361.
    User program running
    Thread main stopped at DAO.java:362.
    User program running
    Thread main stopped after return from 'lookForOrder()' at DAO.java:353.
    User program running
    Thread main stopped after return from 'createOrder()' at DAOIT.java:111.
    User program running
    Thread main stopped at DAOIT.java:112.
    User program running
    Thread main stopped after return from 'invoke()' at Method.java:498.
    User program finished
测试

@Test
public void testLookForOrder() {
    String username = "test";
    String password = "1234";
    String telephone = "12345678";
    if (!dao.lookForUser(username)) {
        dao.createUser(username, password, telephone);
    }
    String bottom = "Almond";
    String topping = "Blue cheese";
    Cupcake cupcake = dao.getCupcakes(1, topping, bottom);
    dao.createOrderLine(cupcake, dao.getUser(username));
    Orderline orderline = dao.createOrderLine(cupcake, dao.getUser(username));
    assertEquals(true, dao.createOrder(username, orderline.getOrderlineId()));
}
正在测试的方法

public boolean createOrder(String username, int orderlineId) {
    int price = 0;
    int getOrderId = 0;
    try {
        if (!lookForUser(username)) {
            return false;
        }
        dbc.open();
        String sql = "SELECT price FROM cupcakeshop.orderline WHERE " + orderlineId
                + " IN (SELECT max(" + orderlineId + ") From cupcakeshop.orderline);";
        ResultSet resultset = dbc.executeQuery(sql);
        while (resultset.next()) {
            price += resultset.getInt("price");
        }
        String insert = "INSERT INTO `cupcakeshop`.`order` (`customerId`, `price`)"
                + " VALUES ('" + getUser(username).getId() + "', '" + price + "');";
        dbc.executeUpdate(insert);

        String getOrder = "select orderId from cupcakeshop.order where customerId = "+getUser(username).getId()+" and price = "+price+";";
        resultset = dbc.executeQuery(getOrder);
        while(resultset.next()){
          getOrderId = resultset.getInt("orderId");
        }
    } catch (SQLException e) {
        System.out.println(e);
        return false;
    }
    return lookForOrder(getUser(username), getOrderId);
}

public boolean lookForOrder(User user, int orderId) {
    String sql = "select orderId from cupcakeshop.order where customerId = " + user.getId() + " and orderId = " + orderId + ";";
    try {
        dbc.open();
        ResultSet resultset = dbc.executeQuery(sql);
        while (resultset.next()) {
            return resultset.getInt("orderId") != 0;
        }
    } catch (SQLException e) {
        System.out.println(e);           
    } 
    return false;
}