Контекст
Я пишу простой 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().. или любой другой метод, который предлагает поиск в Интернете? каков канонический способ сравнения списков для модульных тестов?