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