Как написать модульный тест, чтобы проверить, что конструктор копирования синхронизирован со свойствами класса? - PullRequest
0 голосов
/ 19 декабря 2018

Недавно у нас была ошибка в нашей системе, вызванная забыванием назначить вновь добавленное свойство класса в конструкторе копирования.

Например:

public class MyClass {

    private Long companyId;
    private Long classId;
    private Double value;   <=  newly added

    public MyClass(MyClass myClass) {
        this.setCompanyId(myClass.getCompanyId());
        this.setClassId(myClass.getClassId());
        this.setValue(myClass.getValue());   <= we forget this line
    }

Я хочу написатьмодульный тест, который гарантирует перехват присвоения отсутствующей копии при добавлении нового свойства.Как мне поступить с этим?

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

Вы можете переопределить метод equals() и использовать фрагмент кода следующим образом:

MyClass a = new MyClass();
// set properties of a
MyClass b = new MyClass(a);
Assert.assertEquals(a, b); // check that a.equals(b) returns true
0 голосов
/ 19 декабря 2018

Я бы сделал это с отражением.

  • Создайте экземпляр MyClass.(A)
  • Посредством отражения присвойте значение каждому полю.Это можно сделать с помощью getClass().getDeclaredFields().
  • Создать пустой экземпляр MyClass.(B)
  • Запустите конструктор копирования на A против B.
  • Посредством отражения определите, равны ли поля в A B.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...