2015-09-26 3 views
2

Я пишу интеграционный тестовый класс, в котором много тестовых примеров (50+). Я должен создать несколько объектов разных типов в каждом методе тестирования. Из-за большого количества методов тестирования и создания нескольких объектов в каждом тесте мой тестовый класс становится очень громоздким. Мне нужны предложения относительно того, как я могу сделать это менее подробным и понятным.Уменьшение количества строк кода в тестовом классе (Builder - Factory pattern)

Что я сделал до сих пор - объекты, которые мне нужно создать, сложны. Например, объект A имеет объект B, который имеет список объектов C, у которого есть поле - значение. Мне нужно создать экземпляр объекта A со значением 5. Поэтому я переместил весь этот код в другой класс и назвал его ABuilder с помощью метода - buildWithValue(). Теперь в тестовом классе я просто делаю Abuilder.buildWithValue (5). Это забрало некоторый код из основного тестового класса.

Но теперь у меня есть несколько таких разработчиков BBuilder, CBuilder. Должен ли я переместить всех этих строителей в абстрактный строитель или что-то еще? Что-то вроде GenericBuilder, который принимает в качестве входного типа Builder и другие параметры для создания объекта, и даже если я это сделаю, количество строк не будет сильно уменьшено.

Итак, могу ли я это сделать. Создайте общий конструктор с методом, который принимает три значения (разные типы данных) - value1, value2, value3, которые требуются моими ABuilder, BBuilder и CBuilder. Таким образом, мой метод тестирования будет иметь только одну строку GenericBuild.createObjects (A1, B1, C1)

Или я должен разделить тестовый класс на два по некоторым критериям?

Пожалуйста, предложите

+0

Почему бы вам просто не создать функцию в классе, который создает объект класса A. Создание класса, которое имеет только цель тестирования, не является хорошим подходом на мой взгляд. – rakesh

ответ

0

Вместо шаблона строитель, я бы обеспечить строительство и сохранение ваших вложенных объектов, как JSON, XML или любой формат, который как человек и машина для чтения. Вы можете легко создавать новые объекты в текстовом редакторе, размещать текстовые файлы в папке/src/test/resources (например, если вы используете maven) и конструировать их по мере необходимости в своих тестовых случаях.

+0

Не могли бы вы рассказать, что вы имеете в виду, когда говорите - вы можете легко создавать новые объекты в текстовом редакторе, размещать текстовые файлы в папке/src/test/resources. Может быть, небольшой пример – Andy897

+0

Лично я считаю, что для этой цели Java-код более читабельный (не говоря уже о более гибких, мощных, безопасных по типу и производительности), чем JSON или XML; просто создайте хороший набор вспомогательных классов/методов для создания данных и используйте их в своих тестах. –

+0

@ Rogério Это была моя точка зрения. JSON просто упрощает редактирование данных –

 Смежные вопросы

  • Нет связанных вопросов^_^