Giter VIP home page Giter VIP logo

junit-tdd-by-example's Introduction

Test Driven Development

Введение в тестирование

Задание №1

Предположим, что у нас есть отчет. Например:

Компания Число акций Цена Всего
IBM 1000 25 USD 25 000 USD
Novartis 400 150 CHF 60 000 CHF
Итого: 65 000 USD

Курсы валют:

Из В Курс
CHF USD 1,5

Описание задачи:

5$ + 10 CHF = 10$, если курс обмена 2:1
5$ * 2 = 10$

  1. Выполнять сложение величин в двух различных валютах и конвертировать результат с учетом указанного курса обмена;
  2. Выполнять умножение величин в валюте (стоимость одной акции) на число (количество акций), результатом этой операции должна быть величина в вылюте.
  3. Сделать переменную amount закрытым членом класса
  4. Побочные эффекты(side effect) в классе Dollar
  5. Округление денежных величин

Проблемы:

нет класса Dollar;
нет конструктора;
нет метода times(int); times - умножить на
нет поля amount;

Полный цикл TDD:

  1. Добавить небольшой тест
  2. Запустить все тесты, при этом обнаружить, что что-то не срабатывает.
  3. Внести небольшое изменение.
  4. Снова запустить тесты и убедиться, что все они успешно выполняются.
  5. Устранить доблирование с помощью рефакторинга

Пример:

void testSimpleAddition() {
Money five = dollar(5);
Expression sum = five.plus(five);
Bank bank = new Bank();
Money reduced = bank.reduce(sum, "USD");
assertEquals(dollar(10), reduced);
}

Чистый код, который работает. (Ron Jeffries)

Задача №1
Необходимо написать метод, который должен вернуть ближайшее к 10 число из входного массива чисел.
Если найдены несколько чисел равно удалённые к 10 то вернуть максимальное. Например, среди чисел 9 и 11 вернуть 11.
Например, среди чисел 8 и 11 ближайшее к десяти 11.

Пример тестовых данных:
[1, 2, 3, 4] -> 4
[10, 2, 3, 4] -> 10
[30, -10] -> 30
[7, 13] -> 13

@param array массив целых чисел
@return ближайшее к десяти число
public int nearToTen(int[] arrays) {}

Задача №2

Найти наибольший общий префикс.

Пример тестовых данных:
["flower","flow","flight"] -> "fl"
["dog","racecar","car"] -> ""

Задача №3
Поиск повторяющихся элементов в массиве

Пример тестовых данных:
[1,2,3,1] -> true
[1,2,3,4] -> false
[1,1,1,3,3,4,3,2,4,2] -> true

Задача №4

Input : 1, 2, 5, 4, 4, 5, 2, 3, 6, 5
Output:
Map<String, Integer>
<"1-hello": 1>,
<"2-hello": 2>,
<"3-hello": 1>,
<"5-hello": 3>

Notes:

  1. В результирующей выборке нет 4, 6
  2. Ключ - преобразованный элемент стрима, значение - количество вхождений данного элемента в стриме
  3. Написать все одним чейном(без доп филдов, стейта)

public static Map<String, Long> transform(final Integer... nums) {
return
}

Задание Spring: Требуется разработать приложение с использованием Spring Boot, которое должно хранить вопросы и ответы в виде текстового файла (~ 8 вопросов). Ответы могут быть как выбором из нескольких вариантов или пользователь может сам ввести ответ. Приложение выводит заданный список вопросов и пользователь после ответов получает отчет на сколько процентов его ответы верны. Желательно для этой задачи написать Unit-тесты.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.