Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
3 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,331

Unit тесты

19.02.2016, 13:03. Показов 1440. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не подскажете как грамотно составить unit тесты? И какие основные моменты нужно тестировать в приложениях? То есть например если я делаю запрос на сервер и могу получить от него ответ с ошибкой, но код ошибки может быть от 0 до 500 и что мне теперь нужно составить 500 тестов чтобы протестировать поведение приложения в каждом случае, взависимости от возвращаемой ошибки?? Или как нужно составить грамотно тест в этой конкретной ситуации что нужно учесть??
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.02.2016, 13:03
Ответы с готовыми решениями:

Unit тесты
Доброе время суток! Хочу попросить сторонников и противников Unit тестирования высказать свое мнение по этому поводу. Какие негативные...

Unit-тесты
Как для класса Person сделать unit-тесты (equalsverifier) ??? public class Person { //создание класса Person private...

Тесты и бд
Здравствуйте. Помогите советом пожалуйста, я тестирую DAO слой(Hibernate + Spring). Я создал аналогичную тестовую бд. Вот код теста: ...

12
6 / 6 / 2
Регистрация: 21.07.2015
Сообщений: 21
19.02.2016, 13:45
в основном тестируют методы которые делают что то. тестирующий метод обзывается точно так же как и тестируемый только на конце приписывается Test.
https://www.youtube.com/watch?... v6&index=8
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
19.02.2016, 14:00
yura91, то что вы написили это не сценарий для юнит теста. Юнит тесты проверяют отдельные методы класса
0
3 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,331
19.02.2016, 14:33  [ТС]
А в чем смысл unit тестов я просто не совсем понимаю можете обьяснить принцип по которому работают unit тесты??Ну есть тестируемый метод есть тестирующий и что делает тестирующий метод с тестируемым ?? Как он его тестирует?
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
19.02.2016, 14:40
Цитата Сообщение от yura91 Посмотреть сообщение
я делаю запрос на сервер и могу получить от него ответ с ошибкой, но код ошибки может быть от 0 до 500
Если у вас на каждый код ошибки - разные обработчики, то да.
Обычно считается достаточно покрыть все branch-и исполнения.

Пример
Java
1
2
3
4
5
if (response.getCode() == 200) {
   return "successs";
} else {
   return "failure"
}
Нужно написать два теста.
0
3 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,331
19.02.2016, 16:23  [ТС]
Нужно написать два теста.
Как будут выглядеть 2 теста?
Если у вас на каждый код ошибки - разные обработчики, то да
Что значит разные обработчики - если уменя есть switch и у него 500 case на случай каждой ошибки то это будут разные обработчики или один?
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
20.02.2016, 01:00
yura91, и в каждом case свой отдельный уникальный способ обработки этого кода? Тогда да, от 500 тестов никуда не деться.

Добавлено через 4 минуты
Цитата Сообщение от yura91 Посмотреть сообщение
Как будут выглядеть 2 теста?
Как-то так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public class ServerResponseHandler {
    public String handleResponse(Response response) {
        if (response.getCode() == 200) {
            return "successs";
        } else {
            return "failure";
        }
    }
}
 
class Response {
    int code;
    int getCode() {
        return code;
    }
}
 
class ServerResponseHandlerTest {
    ServerResponseHandler handler = new ServerResponseHandler();
 
    @Test
    public void testSuccess() {
        Response response = new Response();
        response.code = 200;
        assertEquals("success", handler.handleResponse(response));
    }
 
    @Test
    public void testFailure() {
        Response response = new Response();
        response.code = 101;
        assertEquals("failure", handler.handleResponse(response));
    }
}
0
3 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,331
20.02.2016, 23:52  [ТС]
а почему в testFailure переменной code присваивается 101? ведь ее значение не обязательно должно быть равно 101, оно может быть любым отличным от 200 разве нет?

Добавлено через 1 минуту
и что делает вызов функции assertEquals?

Добавлено через 3 минуты
Здесь метод handleResponse тестируется? А почему названия методов для тестирования выбраны testSuccess() и testFailure() а не testhandleResponse например? Ведь названия тестирующих методов ничем не отличаются от названий тестируемых кроме того что в названии сначала идет слово test разве нет?
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
21.02.2016, 16:11
Цитата Сообщение от yura91 Посмотреть сообщение
а почему в testFailure переменной code присваивается 101? ведь ее значение не обязательно должно быть равно 101, оно может быть любым отличным от 200 разве нет?
Да, любым. Можете взять любое, какое вам нравится.
Цитата Сообщение от yura91 Посмотреть сообщение
и что делает вызов функции assertEquals?
Проверяет, что два значения равны друг другу. Иначе - бросает AsssertionError
Цитата Сообщение от yura91 Посмотреть сообщение
Здесь метод handleResponse тестируется?
Да.
Цитата Сообщение от yura91 Посмотреть сообщение
А почему названия методов для тестирования выбраны testSuccess() и testFailure() а не testhandleResponse например?
Потому что название самого класса ServerResponseHandlerTest и из него уже и так понятно что мы тестируем ServerResponseHandler и его метод handleResponse.

Цитата Сообщение от yura91 Посмотреть сообщение
Ведь названия тестирующих методов ничем не отличаются от названий тестируемых кроме того что в названии сначала идет слово test разве нет?
Не понял вопроса. Как назовёте - так и будет называться.
0
3 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,331
21.02.2016, 17:58  [ТС]
Проверяет, что два значения равны друг другу. Иначе - бросает AsssertionError
И что делать в случае возникновения этого AsssertionError?? Как его обработать в данном случае?

Добавлено через 11 минут
И в каком порядке эти методц вызывать сначала handleResponse а потом 2 тестовых метода или как?
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
21.02.2016, 18:19
Цитата Сообщение от yura91 Посмотреть сообщение
Как его обработать в данном случае?
никак. Если исключение возникает, тест считается проваленным.

Почему бы вам не почитать про юнит тесты. Как их пишут, как запускают и для чего они вообще нужны
0
3 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,331
21.02.2016, 18:34  [ТС]
А в каком порядке эти методы вызывать сначала handleResponse а потом 2 тестовых метода или как?

Добавлено через 1 минуту
Просто сама последовательность вызовов методов как будет выглядеть в этом случае?

Добавлено через 11 минут
а есть хорошая книга про unit тесты?
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
21.02.2016, 20:47
Цитата Сообщение от yura91 Посмотреть сообщение
Просто сама последовательность вызовов методов как будет выглядеть в этом случае?
порядок запуска тестов обычно определяется фреймворком.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.02.2016, 20:47
Помогаю со студенческими работами здесь

Тесты в JAVA
Пошел на курсы по JAVA, препод уже несколько лент рассказывает про тесты, говорит что все методы ПО которое мы пишем обязательно необходимо...

JUnit тесты
Мне нужно сделать тесты к проекту, собранному в Maven. Не понимаю, как создать тест. У меня в программе реализуется модуль .jar, который...

Тесты на java
здраствуйте, как сделать, что б при нажатию на кнопку мои ответы не суммировались, а обновлялись. Выходит отвечаешь на все вопросы и...

Тесты по Java
Всем привет, готовлюсь к тестированию по Java есть несколько для меня непонятных вопросов, помогите...

Python unit tests в maven
Есть Maven-проект, в котором есть некоторые питоновские скрипты. Для тестирования этих скриптов написал юнитесты. Хотелось бы знать, можно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru