Контекст
Я пишу простой JUnit тест для класса MyObject
.
A MyObject
может быть создан из статического метода factory, который принимает varargs String.
MyObject.ofComponents("Uno", "Dos", "Tres");
В любой момент существования MyObject
клиенты могут проверять параметры, которые он создал, в форме Список <E> , с помощью метода .getComponents()
.
myObject.ofComponents(); // -> List<String>: { "Uno", "Dos", "Tres" }
Другими словами, a MyObject
запоминает и предоставляет список параметров, которые привели его к существованию. Подробнее об этом контракте:
- Порядок
getComponents
будет таким же, как тот, который выбран для создания объекта - Дублировать последующие String. и сохраняются в порядке
- Поведение на
null
- undefined (другой код гарантирует, чтоnull
не получит factory) - Невозможно изменить список компонентов после создания объекта
Я пишу простой тест, который создает MyObject
из списка String и проверяет, может ли он вернуть тот же список через .getComponents()
. Я делаю это немедленно, но это должно произойти на расстоянии в реалистичном пути кода.
код
Здесь моя попытка:
List<String> argumentComponents = Lists.newArrayList("One", "Two", "Three");
List<String> returnedComponents =
MyObject.ofComponents(
argumentComponents.toArray(new String[argumentComponents.size()]))
.getComponents();
assertTrue(Iterables.elementsEqual(argumentComponents, returnedComponents));
Вопрос
- Google Guava
Iterables.elementsEqual()
лучший способ, если у меня есть библиотека в моем пути сборки, чтобы сравнить эти два списка? это то, о чем я мучился; должен ли я использовать этот вспомогательный метод, который проходит через Iterable <E> . check размер, а затем повторить запуск.equals()
.. или любой другой метод, который предлагает поиск в Интернете? каков канонический способ сравнения списков для модульных тестов?