Ответы пользователя по тегу JUnit
  • Что плохого в моем коде тестового задания на java?

    @red-barbarian
    Навскидку с телефона.
    Пользуйтесь интерфейсом когда нужно описать правила взаимодействия с объектом. Абстрактным классом когда можно выделить некие общие моменты из классов.
    Т. Е конденсатор это интерфейс. Как там храниться значение в цифрах это вопрос реализации. Хоть в текстовом поле. Но это может меняться и поэтому должно быть отделено.
    Т. Е. Наследование лучше от интерфейса.
    2. Дублирование кода
    Если случайное число =...
    init
    set
    add
    Иначе
    init
    set
    add
    ...
    INIT отличается, но set add одни и те же.
    На то и обьктное наследование чтобы это выделять.
    Ответ написан
    Комментировать
  • Что такое JUnit тесты и с чем они проводятся?

    @red-barbarian
    Просто поучительный пример.
    Вам нужно протестировать класс. Что это значит? Протестировать его поведение, хотя бы основное. Т.е. желательно все методы которые могут использовать. Как у черного ящика. (скрытые не тестируем и можно не тестировать getter&setter).
    Как это сделать?
    Вы добавили один метод getFurst(). Вероятно, для тестирования. Но первым элементов не должна ограничиваться проверка. Поэтому нужен скорее метод getItem(int); Это приводит к изменению интерфейса вашего класса (замена не нужного метода нужным)
    Сделали изменения, протестировали. Ок.
    Далее пишете тест на insert. Несколько. И в конце у вас выскакивает исключение. Индекс превышает размер массива. Опа. Вы должны либо явно описать этот случай в документации (генерацию исключения), либо что-то еще сделать. Указать пользователю на этот скользкий случай.

    Далее. Есть метод display
    Как его протестировать автоматически? Никак. Это наводит на мысль "что-то не так". Не так, скорее потому, что этот метод не должен быть в этом классе. класс занимается сортировкой. Выводом на экран должен заниматься другой класс. Если вдруг понадобиться поменять вывод, то вам придется ковырять класс который уже работает и протестирован. И вы будете лапать снова весь код, с риском дернуть что-то что скрыто поменяет корректную работу.
    Дисплей в другой класс.
    итак. убрали getFirst. display. добавили getItem.
    класс хорошо тестируется. и более удобный интерфейс.
    Т.е. вывод из всего: Тестируемость класса зависит от хорошего интерфейса. Требует этого.
    Пригодный к тестированию класс практически всегда (чаще всего) это класс который будет легко использовать. Класс который трудно протестировать, чаще всего трудно будет использовать.
    Примерно так.
    Конкретно по теме.
    Просто по коду тестов, вопросов нет. Вопрос про тестирование класса.
    Ответ написан
    6 комментариев