Как создать контрольные утверждения для объектов в Списке объектов? - PullRequest
0 голосов
/ 09 июля 2019

У меня есть 2 файла JSON.Оба из которых имеют одинаковую структуру, содержащую список объектов.Я должен использовать Asserts, которые проверяют, равны ли ключи в объектах для обоих файлов JSON.Каждое свойство сопоставляется с переменной в классе Java.

Для других ключей, которые могут быть только объектами / переменными, проверить assertEquals просто, но когда дело доходит до списка объектов, я не могу найтиподход.

Первый JSON-файл

    "cars":[
       {
               "name" : Camry,
               "make" : Toyota
       },
       {
               "name" : Maruti 800,
               "make" : Maruti Suzuki
       }
    ]

Второй Json-файл

    "cars":[
       {
               "name" : Mustang,
               "make" : Coupe
       },
       {
               "name" : Maruti 800,
               "make" : Maruti Suzuki
       }
    ]

Свойства, name и make считываются и сохраняются в классе CarDetails.Свойство «автомобили» хранится в классе MasterCar.Я должен сравнить список «автомобилей» в 1-м файле JSON с тем же во 2-м файле.В приведенном выше примере кода мне нужно иметь возможность создавать утверждения для каждого свойства в файле JSON.Пример, assertEquals (file1.cars [0] .name, file2.cars [0] .name).Я могу сделать это вручную, но если список содержит 50 объектов, например, было бы утомительно вручную создавать утверждения для нескольких объектов для каждого свойства.Я хочу знать, могу ли я перебирать списки и создавать утверждения независимо для каждого объекта в списке.

1 Ответ

0 голосов
/ 09 июля 2019

На мой взгляд, каждый файл JSON представляет список автомобилей .... Я бы просто десериализовал файл в список.Вы ссылаетесь на «ключи», но не определяете, что такое ключ.В Java объект может переопределить equals (), чтобы определить его собственное равенство.Он также может определять hashcode (), т.е.

    public class Car(){
        private String model;
        private String make;
        public Car(String make; String model) {
          this.model =  model;
          this.make = make;
        }
       @Override
       public boolean equals(Obj obj){

          return obj instance of Car.class && 
                  make.equals(((Car)obj).getMake()) 
                  && model.equals(((Car)obj).getModel())
       }
       //override hashcode as well
        //define getters

    }

. Затем вы можете выполнять итерацию по каждому списку и проверять, содержится ли каждый из списка 1 в списке 2. т.е. использовать List.contains(obj)

.можете прочитать больше о переопределении equals и hashcode здесь.https://www.mkyong.com/java/java-how-to-overrides-equals-and-hashcode/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...