Потоковые, итеративные тесты, тесты на надежность и отладочные тесты

FizzBuzz — это разумный выбор для теста на кодирование. Простота задачи FizzBuzz очень эффективна при отсеивании неподходящих кандидатов.

Для каждого целого числа от 1 до 100 выведите FIZZ, если число делится на 3, BUZZ, если число делится на 5, и FIZZ BUZZ, если число делится и на 3, и на 5.

Результат выглядит следующим образом:

1 2 Шипение 4 Жужжание Шипение 7 8 Шипение Жужжание 11 Шипение 13 14 Шипение Жужжание 16 17 Шипение 19 Жужжание Шипение 22 23 Шипение Жужжание 26 Шипение 28 29 Шипение Жужжание 31 32 Шипение 34 Жужжание Шипение 37 38 ШУМ 41 ШУМ 43 44 ШУМ 46 47 FIZZ 49 BUZZ FIZZ 52 53 FIZZ BUZZ 56 FIZZ 58 59 FIZZ BUZZ 61 62 FIZZ 64 BUZZ FIZZ 67 68 FIZZ BUZZ 71 FIZZ 73 74 FIZZ BUZZ 76 77 FIZZ 79 BUZZ FIZZ 82 83 F IZZ BUZZ 86 FIZZ 88 89 FIZZ BUZZ 91 92 FIZZ 94 ЖУМ-ШИПЕНИЕ 97 98 ШУМ-ШУМ

Улучшенный тест FizzBuzz

В то время как классический FizzBuzz ожидает строку в качестве вывода, улучшенная версия ожидает список строк, которые можно легко сравнить, отладить или преобразовать в другой формат (например, строку).

public List<String> fizzBuzzImproved() {
    // return a list of String instead of individual output
    // [1, 2, FIZZ, 4, BUZZ, FIZZ, 7, 8, FIZZ, BUZZ, 11, 
    // FIZZ, 13, 14, FIZZ BUZZ, 16, 17, FIZZ, 19, BUZZ, FIZZ, 22, 23,...
}

Даже если используется классическая версия, кандидат все равно должен реализовать улучшенную версию, а затем преобразовать ее в строку.

// Obtain the result as a list of string
var result = fb.fizzBuzzImproved();

// then convert it to a string
println(String.join(" ", result));
// 1 2 FIZZ 4 BUZZ FIZZ 7 8 FIZZ BUZZ 11 FIZZ...

Итеративное решение

public List<String> fizzBuzzIterative() {
    var fizzBuzz = new ArrayList<String>();

    for (int i = 0; i < MAX; i++) {
        int number = i + 1;
        if (number % 15 == 0) {
            fizzBuzz.add("FIZZ BUZZ");
        } else if (number % 3 ==…