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

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

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

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

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

15 ответов

15 просмотров

Мне кажется просто неудачное название 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
У любого теста есть окружение, всегда. Понятно, чт...

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

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

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

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Карта сайта