- Сравнение с трассировкой сбоев - непростая задача, когда ваш объект немного сложен.
- Сравнение с отладчиком полезно, если вы не переопределили toString (). Решение остается очень утомительным, потому что вы должны осматривать каждый предмет с обеих сторон.
Плагин Junit Eclipse предлагает опцию в случае сбоя: «Сравнить фактическое с ожидаемым TestResult». Представление достаточно близко к классическим инструментам сравнения контента:
Проблема в том, что он доступен только тогда, когда вы пишете assertEquals()
с String
объектами (на скриншоте мы видим, что опция в углу не предлагается без класса String
):
Вы можете использовать toString()
на своем объекте в утверждении, но это не очень хорошее решение:
- во-первых, вы коррелируете
toString()
с equals(Object)
... изменение одного должно повлечь изменение другого.
- во-вторых, семантика больше не соблюдается.
toString()
должен возвращать полезный метод для отладки состояния одного объекта, а не для идентификации объекта в семантике Java (equals(Object)
).
Мне кажется, что в плагине JUnit Eclipse отсутствует функция.
Если сравнение не удается, даже если мы сравниваем не String
объекты, оно должно предложить сравнение двух объектов, которые полагаются на их метод toString()
.
Это может предложить минимальный визуальный способ сравнения двух неравных объектов.
Конечно, поскольку equals(Object)
не обязательно соотносится с toString()
, выделенные различия следует изучать нашими глазами, но это уже было бы очень хорошим основанием, и в любом случае это намного лучше, чем никакой инструмент сравнения.