Есть класс, который выполняят логику деления в столбик, результаты вычисления сохраняются в его переменных.
public class IntegerDivisionLogic {
private Integer dividend;
private Integer divisor;
private int quotient;
private ArrayList<Integer> remaindersCollection = new ArrayList<>();
Дальше, класс IntegerDivisionLogic передает все данные в файл .json
{
"dividend": 12341234,
"divisor": 1234,
"quotient": 10001,
"remaindersCollection": [
1234,
1234,
1234,
1234,
0
]
}
После, класс рисовалка IntegerDivisionDrawer читает данные из .json занося их в свои поля.
public class IntegerDivisionDrawer {
private Integer dividend;
private Integer divisor;
private Integer quotient;
private ArrayList<Integer> remaindersCollection = new ArrayList<>();
На основе данных строит алгоритм отрисовки деления.
String drawIntegerDivision() {
buildHead();
buildBody();
buildTail();
return result.toString();
}
Надо написать юнит тесты для класса IntegerDivisionDrawer, используя mockito, (говорят так проще всего). Но я не знаю с чего начать писать и как к нему подступится. Для для класса IntegerDivisionLogic тесты написал.
Я вижу 2 темы для обсуждения:
Согласно лучшим традициям ООП ваш класс рисования должен принять готовый объект для рисования и не его ответственность заниматься парсингом json. И как следствие Вам уже не нужно дублировать все поля первого класса, а просто создать поле с типом первого класса:
class IntegerDivisionDrawer {
private final IntegerDivisionLogic logic;
IntegerDivisionDrawer(IntegerDivisionLogic logic) {
this.logic = logic;
}
}
Теперь и тестировать можно без mockito.
А чтение и парсинг json оформить можно в отдельном методе:
IntegerDivisionLogic getFromJsonFile(String fileName) {...}
Теперь на вызывающей стороне будет примерно так:
IntegerDivisionLogic logicFromFile = getFromJsonFile("/user/bob/my.json");
IntegerDivisionDrawer drawer = new IntegerDivisionDrawer(logicFromFile);
drawer.drawIntegerDivision();
Остаётся открытым вопрос а как же тестировать парсинг json? Создаёте строку json и передаёте в метод, на выходе ожидаете сконструированный объект. Ничего мокать в этом случае не нужно.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть класс User, в котором заданы 6 имен и 6 фамилий и который создает случайного человека со случайным именем, фамилией и возрастомВ нем реализован...
интересует вопрос, каким образом можно массив разделить на два ряда в конечном отображении? На данный момент массив отображается одним рядом
Я новичок в андроид разработкеУ меня вопрос