169 похожих чатов

Я бы еще добавил, что есть разное понимание что такое

юнит тест. Это кстати относится к одной из тем над которыми я работаю для будующих докладов.
В моем понимании юнит тест это:
- Тест который работает очень быстро
- Тест который тестирует одно поведение
- Тест который запускается в изоляции от других тестов

Основываясь на этих утверждениях, я допускаю, что некоторые тесты в Elixir проектах, которые используют базу могут называться юнит-тестами.

Кто хочет по-дискуссировать? Или оставим дискуссию для афтер-пати следующего митапа? :)

15 ответов

5 просмотров

Мне кажется просто неудачное название exunit как-то магически людей убеждает что они пишут юнит тесты

А почему юнит тест запускается в изоляции от других тестов

Anastasiya Dyachenko
А почему юнит тест запускается в изоляции от други...

Я думаю, что потому что некоторые тесты могут измениться (вследствие изменения логики тестируемого функционала) и тогда могут упасть тесты не связанные с изменённым функционалом

Anastasiya Dyachenko
А почему юнит тест запускается в изоляции от други...

Хотя я наверно не так поняла что тут значит изоляция. Подумала что параллелить нельзя

Юнит тест это тестирование какого-то юнита - отдельной единицы программы (да, она может быть большая), но это не тестирование связок

Vladyslav Kuznietsov
Юнит тест это тестирование какого-то юнита - отдел...

всё что идёт с базой в остальном мире называется интеграционными тестами

Vladyslav Kuznietsov
всё что идёт с базой в остальном мире называется и...

Ну, довольно часто база нужна и для юнит тестов, например засетапить себе какие-нибудь сущности

Lama Lover
Ну, довольно часто база нужна и для юнит тестов, н...

я понял что в elixir все так делают (везде почти так делают), но почему вы уцепились в слово "юнит". У вас не юниты, а интеграционные значит

Vladyslav Kuznietsov
всё что идёт с базой в остальном мире называется и...

Это ваша привычка. В рельсах и всех производных, юнит тесты с бд работают

Maksim Lapshin
Это ваша привычка. В рельсах и всех производных, ю...

не вижу ничего хорошего в том что бы искривлять понятия

Maksim Lapshin
Это ваша привычка. В рельсах и всех производных, ю...

Никогда не слышал что бы в рельсах “Интеграционным тестированием” называли тесты связанные с базой. Давайте не привязывать мнение человека к технологии.

Vladyslav Kuznietsov
я понял что в elixir все так делают (везде почти т...

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

Lama Lover
Нет, это всё-таки юнит тесты Каждый тест, по-хорош...

сетап, вызов, проверка, очистка это как раз признак интеграции с окружением юнит тест имеет два шага: вызов и проверка

Vladyslav Kuznietsov
сетап, вызов, проверка, очистка это как раз призна...

У любого теста есть окружение, всегда. Понятно, что в идеальном розовом мире, где все функции чистые, можно и без сетапа, но любое межпроцессное взаимодействие означает наличие окружения. Например, параметры конфигурации приложения присутствуют всегда, в любом тесте

Lama Lover
У любого теста есть окружение, всегда. Понятно, чт...

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

Похожие вопросы

Обсуждают сегодня

А чем вам питонисты не угодили?😂
.
79
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Ещё такой вопрос. Мне необходимо хранить пароль пользователя локально. Для этого планирую использовать ini файл. Это для автозаполнения полей логин и пароль при авторизации. Е...
Евгений
19
Ты просто гитлеровскую эстетику плохо понимаешь. Он же всё под Цезаря делал. А это как бы запрещённый приём в политике. Пиджаки они зачем все носят? Чтобы показать что они тип...
Ivan Kropotkin
4
а чем лучше всего сделать глобальный лок, если много нодов, до сотни? ну то есть мне надо, чтобы некоторые операции с объектом не происходили одновременно. перемещение между н...
Д. П.
15
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
Hi guys, I'm looking for a good LLM course. Is there any course to learn LLMs in advanced? I'm aiming to use them in my apps, so a perfect course in my openion, is not only a ...
Taha
14
База данных не поможет. Шифрование не поможет. Какие там ещё варианты? Накидывайте.
КТ315
20
А табстоп это сообщение от окна или от элемента управления?
The Bird of Hermes
18
$params = [ 'formid' => 'feedbackForm', 'formTpl' => '@CODE: <form class="form-validate" data-id="ajax_form"> <fieldset class="margin-bottom-md"> ...
Pathologic
1
Карта сайта