Как сравнивать множество объектов в одном AssertEquals?
Я сравниваю объекты из веб приложения и базы данных, в ревью мне написали, что нужно сравнить всё в одном Assert, как это сделать?
Assert.assertEquals(testForm.getTestName(), testTable.getName())
Assert.assertEquals(testForm.getMethodName(), testTable.getMethodName());
Assert.assertEquals(testForm.getStartTime(), testTable.getStartTime());
Assert.assertEquals(testForm.getEndTime(), testTable.getEndTime());
....
Ответы (1 шт):
Автор решения: Анжелика
→ Ссылка
SoftAssert softAssert = new SoftAssert();
softAssert.assertEquals(testForm.getTestName(), testTable.getName());
softAssert.assertEquals(testForm.getMethodName(), testTable.getMethodName());
softAssert.assertEquals(testForm.getStartTime(), testTable.getStartTime());
softAssert.assertEquals(testForm.getEndTime(), testTable.getEndTime());
softAssert.assertAll();
Если хотите сравнить два одинаковых вида объекта (например, таблицы с одинаковыми названиями столбцов), то можно создать модель и переназначить у неё equals
Про создание моделей написано в статье по этой ссылке, но она на английском
По переназначению:
Прописываем в модели (назовём её Model) метод equals и сравниваем нужные элементы модели
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
Model model = (Model) o;
return model.getName().equals(this.getName())//getTestName() придётся переименовать
//или попробовать поэксперементировать
&& model.getMethodName().equals(this.getMethodName())
&& model.getStartTime().equals(this.getStartTime())
&& model.getEndTime().equals(this.getEndTime());
}