| 
 | 
| 
 
Ioc и Unittest 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Всем доброго дня.Пытаюсь понять  Ioc и не могу понять момент с Unit тестированием.  Т.е в чём разница что метод упадёт при вызове у детали или у абстракции. Или плюс в том что мы можем тестировать метод любой реализации? Заранее благодарен ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 13.08.2019, 12:32 | 
  
  
  
   | 
||
| 
 
Ioc и Unittest 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Junior1997, у абстракции интересует факт самого вызова и данные, которые переданы если абстракция возвращает данные, то тестируется правильная обработка полученных данных ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 13.08.2019, 13:45 | 
  
  
  
   | 
||
| 
 
Ioc и Unittest 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Junior1997Всем доброго дня.Пытаюсь понять  Ioc и не могу понять момент с Unit тестированием.  Т.е в чём разница что метод упадёт при вызове у детали или у абстракции. Или плюс в том что мы можем тестировать метод любой реализации? Заранее благодарен тестируешь ты всегда конкретную реализацию, конкретный код интерфейсы тебе помогают в интересующий тебя класс подсунуть тестовую имплементацию. чтобы протестить изолированно от БД, http-вызовов, другого когда, которй что-то делает Ioc тут вобщем-то не причем ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 13.08.2019, 21:50 | 
  
  
  
   | 
||
| 
 
Ioc и Unittest 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  hVosttJunior1997, у абстракции интересует факт самого вызова и данные, которые переданы если абстракция возвращает данные, то тестируется правильная обработка полученных данных Тестирвать интефейсы - оверхед ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 13.08.2019, 21:59 | 
  
  
  
   | 
||
| 
 
Ioc и Unittest 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  hVosttJunior1997, у абстракции интересует факт самого вызова и данные, которые переданы если абстракция возвращает данные, то тестируется правильная обработка полученных данных поясни ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 13.08.2019, 22:03 | 
  
  
  
   | 
||
| 
 
Ioc и Unittest 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  love_bachТестирвать интефейсы - оверхед Серьёзно? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Если мы покрываем тестами класс MySuperService, мы должны убедиться, что метод DoSomething вызовет метод Send у IMailService, и вызовет правильно. Если что-то возвращается из сервиса, то проверить, что данные правильно интерпретированы. Какой ещё оверхед? Чего вы там городите? ))) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 16.08.2019, 11:54 | 
  
  
  
   | 
||
| 
 
Ioc и Unittest 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  hVosttlove_bachТестирвать интефейсы - оверхед Серьёзно? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Если мы покрываем тестами класс MySuperService, мы должны убедиться, что метод DoSomething вызовет метод Send у IMailService, и вызовет правильно. Если что-то возвращается из сервиса, то проверить, что данные правильно интерпретированы. Какой ещё оверхед? Чего вы там городите? ))) Ok, не понял твой ответ сначала, а удалить сообщение уже нельзя ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 16.08.2019, 20:55 | 
  
  
  
   | 
||
| 
 
Ioc и Unittest 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  love_bachТестирвать интефейсы - оверхед WTF "тестировать интерфейсы"? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 29.09.2019, 22:48 | 
  
  
  
   | 
||
| 
 
Ioc и Unittest 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  fkthatlove_bachТестирвать интефейсы - оверхед WTF "тестировать интерфейсы"? Почему нет-то? Особенно с учётом, что у интерфейсов теперь появились дефолтные методы ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 30.09.2019, 01:19 | 
  
  
  
   | 
||
| 
 
Ioc и Unittest 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  hVosttПочему нет-то? Особенно с учётом, что у интерфейсов теперь появились дефолтные методы  По мне так от дефолтных методов каким-то злом попахивает. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 30.09.2019, 07:20 | 
  
  
  
   | 
||
| 
 
Ioc и Unittest 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  fkthathVosttПочему нет-то? Особенно с учётом, что у интерфейсов теперь появились дефолтные методы    По мне так от дефолтных методов каким-то злом попахивает. да, теперь уже и не скажешь, что интерфейсы отличаются от классов наличием реализации у последних ))) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 30.09.2019, 13:36 | 
  
  
  
   | 
||
| 
 
Ioc и Unittest 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  love_bachhVosttпропущено... Серьёзно? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Если мы покрываем тестами класс MySuperService, мы должны убедиться, что метод DoSomething вызовет метод Send у IMailService, и вызовет правильно. Если что-то возвращается из сервиса, то проверить, что данные правильно интерпретированы. Какой ещё оверхед? Чего вы там городите? ))) Ok, не понял твой ответ сначала, а удалить сообщение уже нельзя ну, это конечно не называется "тестирование интерфейсов" ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 01.10.2019, 19:57 | 
  
  
  
   | 
||
| 
 
Ioc и Unittest 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  love_bachну, это конечно не называется "тестирование интерфейсов" интерфейсы это что? это контракт. тестирование правильного использования контракта в данном случае чем является? тестирование интерфейса. сам по себе интерфейс, конечно, не тестируется, а его конкретное использование в рамках тестирования конкретной реализации. но. это ещё не всё. к примеру, у вас на проекте может быть принято соглашение, например, для каждого сервисного интерфейса должен быть указан в атрибутах тип реализации, для автоматической регистрации зависимости. единственный способ гарантировать, что никто не забыл указать атрибут, это протестировать все интерфейсы на предмет наличия правильных атрибутов. без всякой реализации. и это ещё не всё. сам интерфейс может быть протестирован как набор кейсов, покрывая все инварианты использования конкретного экземпляра интерфейса, независимых от реализации. это и есть тестирование интерфейса. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 01.10.2019, 23:24 | 
  
  
  
   | 
||
| 
 
Ioc и Unittest 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  hVostt к примеру, у вас на проекте может быть принято соглашение, например, для каждого сервисного интерфейса должен быть указан в атрибутах тип реализации, для автоматической регистрации зависимости. Это что же получается то? Модули верхнего уровня зависят от модулей нижнего уровня, абстракции зависят от деталей. Вах-вах! ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 03.10.2019, 17:59 | 
  
  
  
   | 
||
| 
 
Ioc и Unittest 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  hVosttтестирование правильного использования контракта в данном случае чем является? тестирование интерфейса. тестирование правильного использования контракта это тестирование потребителя этого контракта. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 03.10.2019, 20:41 | 
  
  
  
   | 
||
| 
 
Ioc и Unittest 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  ЕвгенийВhVosttк примеру, у вас на проекте может быть принято соглашение, например, для каждого сервисного интерфейса должен быть указан в атрибутах тип реализации, для автоматической регистрации зависимости. Это что же получается то? Модули верхнего уровня зависят от модулей нижнего уровня, абстракции зависят от деталей. Вах-вах! в каком месте-то? ) fkthatтестирование правильного использования контракта это тестирование потребителя этого контракта. код теста имитирует потребителя. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 04.10.2019, 01:34 | 
  
  
  
   | 
||
| 
 
Ioc и Unittest 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  hVosttкод теста имитирует потребителя. Ты чота путаешь. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. Человеческим языком это можно было бы озвучить так: "При условии, что реализация "IReader.ReadData" вернет данные "testData", метод "ObjectUnderTheTest.ReadAndWrite" должен вызвать метод "IWriter.WriteData" с этими данными." Где тут имитация? Тестируется именно concrete method ReadAndWrite класса ObjectUnderTheTest. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 04.10.2019, 17:43 | 
  
  
  
   | 
||
| 
 
Ioc и Unittest 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  fkthatЧеловеческим языком это можно было бы озвучить так: "При условии, что реализация "IReader.ReadData" вернет данные "testData", метод "ObjectUnderTheTest.ReadAndWrite" должен вызвать метод "IWriter.WriteData" с этими данными." Где тут имитация? Тестируется именно concrete method ReadAndWrite класса ObjectUnderTheTest. контракты тоже можно тестировать :) на предмет полноты и достижимости. плюс, гарантия, что контракт не изменится, а если изменится, то как это повлияет на сценарии использования. например: Код: c# 1. 2. 3. тест Код: c# 1. 2. интересует декларативное выполнение контракта, а не реализация. виден сценарий использования контракта. :) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 04.10.2019, 18:17 | 
  
  
  
   | 
||
| 
 
Ioc и Unittest 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  hVostt  Код: c# 1. 2. Ну и "Sum" вернет просто "0". В чем тут тест-то? В том что у "ICalc" просто есть метод "Sum" с двумя параметрами, что ли? Так это и так ясно, если код собирается - не адов JS все-таки. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 04.10.2019, 19:34 | 
  
  
  
   | 
||
| 
 
Ioc и Unittest 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  hVostt, Была, впрочем, в докоревские времена такая фреймворка, как "Microsoft Code Contracts" (R.I.P.) и она действительно позволяла описать контракты интерфейса отдельно от его реализации и даже протестировать их не имея реализации вообще. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 04.10.2019, 19:45 | 
  
  
  
   | 
||
| 
 
Ioc и Unittest 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  fkthathVostt, Была, впрочем, в докоревские времена такая фреймворка, как "Microsoft Code Contracts" (R.I.P.) и она действительно позволяла описать контракты интерфейса отдельно от его реализации и даже протестировать их не имея реализации вообще. хвост так-то правильно говорит, но считает, что его термины/стиль общения общеупотребимы. "тестирование интерфейсов" - да все уже поняли, о чем тут ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 05.10.2019, 10:29 | 
  
  
  
   | 
||
| 
 
Ioc и Unittest 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  fkthathVosttтестирование правильного использования контракта в данном случае чем является? тестирование интерфейса. тестирование правильного использования контракта это тестирование потребителя этого контракта. да, но вроде про это и речь? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 05.10.2019, 10:34 | 
  
  
  
   | 
||
| 
 
Ioc и Unittest 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  hVosttlove_bachну, это конечно не называется "тестирование интерфейсов" интерфейсы это что? это контракт. тестирование правильного использования контракта в данном случае чем является? тестирование интерфейса. сам по себе интерфейс, конечно, не тестируется, а его конкретное использование в рамках тестирования конкретной реализации. но. это ещё не всё. к примеру, у вас на проекте может быть принято соглашение, например, для каждого сервисного интерфейса должен быть указан в атрибутах тип реализации, для автоматической регистрации зависимости. единственный способ гарантировать, что никто не забыл указать атрибут, это протестировать все интерфейсы на предмет наличия правильных атрибутов. без всякой реализации. и это ещё не всё. сам интерфейс может быть протестирован как набор кейсов, покрывая все инварианты использования конкретного экземпляра интерфейса, независимых от реализации. это и есть тестирование интерфейса. местами ты загоняешься: "например, для каждого сервисного интерфейса должен быть указан в атрибутах тип реализации, для автоматической регистрации зависимости" - хер ты это протестишь, похожий топик а Java есть "для каждого сервисного интерфейса должен быть указан в атрибутах тип реализации, для автоматической регистрации зависимости" тут какой-то проеб в архитектуре "единственный способ гарантировать, что никто не забыл указать атрибут, это протестировать все интерфейсы на предмет наличия правильных атрибутов. без всякой реализации" как, рефлексией? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 05.10.2019, 10:41 | 
  
  
  
   | 
||
| 
 
Ioc и Unittest 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  love_bachhVosttк примеру, у вас на проекте может быть принято соглашение, например, для каждого сервисного интерфейса должен быть указан в атрибутах тип реализации, для автоматической регистрации зависимости Ну, тут он чота вообще прогнал. Интерфейс вообще не должен нихера знать про свои реализации и все, конец сказке. Кстати, как они с таким соглашением будут выкручиваться, если у них интерфейс и реализация в разных сборках. А если захочется выпилить вообще нах текущюю реализацию и сделать новую, то придется лезть в интерфейс и менять аттрибут. Регистрация "by conventions" это очень даже упортребляемая вещь, но делается она совсем не так, да и вообще все норм. контейнеры её и так из коробки поддерживают, без всяких половых фантазий с аттрибутами. Код: c# 1. 2. 3. Вообще, на мой вкус и цвет любая сборка с интерфейсами, классами и т.п. должна быть "container-agnostic", т.е. вообще ничего не знать про то, что её будут через IoC дергать, не говоря уже о том, чтобы как-то зависеть от конкретного контейнера. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 05.10.2019, 14:29 | 
  
  
  
   | 
||
| 
 
Ioc и Unittest 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  hVosttсам интерфейс может быть протестирован как набор кейсов, покрывая все инварианты использования конкретного экземпляра интерфейса, независимых от реализации. это и есть тестирование интерфейса. "Посмотри, что за х...ню ты написал" (с) Ты, вроде бы, умный человек, но периодически начинаешь впадать в какую-то ересь. Соблюдение инвариантов и постусловий - это ответственность кнкретной реализации контракта - без неё ты никак это не протестируешь. Можно, в принципе, протестировать, что потребитель сервиса всегда соблюдает предусловия, но это опять-таки будет тест кода потребителя сервиса, а не кода интерфейса. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 05.10.2019, 15:03 | 
  
  
  
   | 
||
| 
 | 

start [/forum/topic.php?fid=17&msg=39872000&tid=1349099]:  | 
    0ms | 
get settings:  | 
    9ms | 
get forum list:  | 
    11ms | 
check forum access:  | 
    3ms | 
check topic access:  | 
    3ms | 
track hit:  | 
    56ms | 
get topic data:  | 
    11ms | 
get forum data:  | 
    3ms | 
get page messages:  | 
    50ms | 
get tp. blocked users:  | 
    1ms | 
| others: | 13ms | 
| total: | 160ms | 

| 0 / 0 | 

    Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
    
    
    «На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
    
    
    ... ля, ля, ля ...