Java AssertionError - PullRequest
       7

Java AssertionError

0 голосов
/ 16 апреля 2020

Я пытаюсь утвердить равенства 2-х массивов. Я получаю сообщение об ошибке в консоли, хотя списки идентичны. Есть идеи, что здесь происходит? Любая помощь будет принята с благодарностью ..

ИЗВЛЕЧЕНИЕ ДАННЫХ ИЗ БД И ПОСТАВЛЕНИЕ ЕГО В КАРТУ

    public Map<String, List<Products>> Req1() throws SQLException {

        BaseQuery bq = new BaseQuery("root", "georgespc");

        List<String> columns = new ArrayList<String>();
        columns.add("productCode");
        columns.add("productName");
        columns.add("productLine"); // 2
        columns.add("productScale");
        columns.add("productVendor");
        columns.add("productDescription");
        columns.add("quantityInStock");
        columns.add("buyPrice");
        columns.add("MSRP");

        ArrayList<ArrayList<Object>> tableOfProducts = bq.select(columns, "products");

        List<String> productLines = new ArrayList<String>();

        Map<String, List<Products>> lineWithProducts = new HashMap<String, List<Products>>();

        for (int i = 0; i < tableOfProducts.size(); i++) {

            if (!productLines.contains(tableOfProducts.get(i).get(2))) {
                productLines.add(tableOfProducts.get(i).get(2).toString());
                lineWithProducts.put(tableOfProducts.get(i).get(2).toString(), new ArrayList<Products>());
            }

        }

        for (int i = 0; i < tableOfProducts.size(); i++) {

            String ID = tableOfProducts.get(i).get(0).toString();
            String name = tableOfProducts.get(i).get(1).toString();
            String line = tableOfProducts.get(i).get(2).toString();
            String scale = tableOfProducts.get(i).get(3).toString();
            String vendor = tableOfProducts.get(i).get(4).toString();
            String desc = tableOfProducts.get(i).get(5).toString();
            Integer quantity = (Integer) tableOfProducts.get(i).get(6);
            BigDecimal price = (BigDecimal) tableOfProducts.get(i).get(7);
            BigDecimal msrp = (BigDecimal) tableOfProducts.get(i).get(8);

            Products p = new Products(ID, name, line, scale, vendor, desc, quantity, price, msrp);

            if (!lineWithProducts.get(line).contains(p)) {
                lineWithProducts.get(line).add(p);
            }

        }

        return lineWithProducts;

    }




ИСПЫТАТЕЛЬНЫЙ КЛАСС

    @Test
    public void test() throws SQLException {
        Map<String, List<Products>> lineWithProducts = new HashMap<String, List<Products>>();
        BaseQuery bq = new BaseQuery("root", "georgespc");
        SetH_req1 requirements = new SetH_req1();

        ResultSet rs = bq.query("select productline from productLines");
        ResultSetMetaData rsmd = rs.getMetaData();

        while (rs.next()) {


            for (int i = 1; i <= rsmd.getColumnCount(); i++) {
                String columnValue = rs.getString(i);
                lineWithProducts.put(columnValue, new ArrayList<Products>());

            }

        }

        rs = bq.query(
                "select productCode, productName, productline, productScale, productVendor, productDescription, quantityInStock, buyPrice, MSRP "
                        + "from products where productline='motorcycles'");
        rsmd = rs.getMetaData();
        System.out.println("\n\n\n\n");

        String line = null;

        while (rs.next()) {

            Products p = null;

            for (int i = 1; i <= rsmd.getColumnCount(); i++) {

                String ID = rs.getString(1);
                String name = rs.getString(2);
                line = rs.getString(3);
                String scale = rs.getString(4);
                String vendor = rs.getString(5);
                String desc = rs.getString(6);
                Integer quantity = rs.getInt(7);
                BigDecimal price = rs.getBigDecimal(8);
                BigDecimal msrp = rs.getBigDecimal(9);

                p = new Products(ID, name, line, scale, vendor, desc, quantity, price, msrp);

            }


            if (!lineWithProducts.get(line).contains(p)) {
                lineWithProducts.get(line).add(p);
            } 


        }

        assertEquals(requirements.Req1().get(line).get(1), lineWithProducts.get(line).get(1));



ОШИБКА

java .lang.AssertionError: ожидается: com.com1028.assignment.Products <</p>

ID = S10_2016, name = 1996 Moto Guzzi 1100i, productType = Мотоциклы, productScale = 1: 10, vendor = Highway 66 Mini Classics, описание = официальные логотипы и эмблемы Moto Guzzi, седельные сумки, расположенные сбоку мотоцикла, детальный двигатель, рабочее рулевое управление, рабочая подвеска, два кожаных сиденья, багажная полка, двойные выхлопные трубы, небольшая седельная сумка, расположенная на ручках, двухцветная краска с chrome акцентами, улучшенная детализация в * d2410 *, вращающиеся колеса, рабочий ударный стенд, литой металл с деталями из пластика c и запеченная эмаль финиш sh., сток = 6625, цена = 68,99 , MRSP = 118,94

, но был: com.com1028.assignment.Products <</p>

ID = S10_2016, name = 1996 Moto Guzzi 1100i, productType = Мотоциклы, productScale = 1: 10, vendor = Шоссе 66 Mini Cl assics, описание = официальные логотипы и эмблемы Moto Guzzi, седельные сумки, расположенные сбоку мотоцикла, детальный двигатель, рабочее рулевое управление, рабочая подвеска, два кожаных сиденья, багажная полка, двойные выхлопные трубы, небольшая седельная сумка, расположенная на руле, двухцветная краска с chrome акцентами, превосходная деталь d ie - литье, вращающиеся колеса, рабочий ударный стенд, литой металл с пластиками c деталей и обожженной эмалью, отделка sh., сток = 6625, цена = 68,99, MRSP = 118,94

>

1 Ответ

0 голосов
/ 16 апреля 2020

Вы сравниваете два объекта Products, поэтому вам следует убедиться, что вы переопределили метод equals этого класса. Например:

@Override
public boolean equals(final Object o) {
    if (o == null || this.getClass() != o.getClass()) {
        return false;
    }
    final Products products = (Products) o;
    return Objects.equals(this.id, products.id) &&
            Objects.equals(this.name, products.name) &&
            Objects.equals(this.line, products.line) &&
            Objects.equals(this.scale, products.scale) &&
            Objects.equals(this.vendor, products.vendor) &&
            Objects.equals(this.desc, products.desc) &&
            Objects.equals(this.quantity, products.quantity) &&
            Objects.equals(this.price, products.price) &&
            Objects.equals(this.msrp, products.msrp);
}

Конечно, если вы переопределите equals, вам также следует переопределить hashCode:

@Override
public int hashCode() {
    return Objects.hash(
            this.id,
            this.name, 
            this.line, 
            this.scale, 
            this.vendor, 
            this.desc, 
            this.quantity, 
            this.price, 
            this.msrp);
}
...