Переключение на Главную Страницу Страницы: 1 ... 4 5 [6] 7 8 9 ОтправитьПечать
Очень популярная тема (более 25 ответов) Для затравки. Юниттестирование на восьмерке. Очень сырой драфт. (число прочтений - 60447 )
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #75 - 14. Мая 2010 :: 06:00
Печать  
fez писал(а) 14. Мая 2010 :: 05:13:
О, а я думал, что это синтетическая проблема и особо в нее не вникал. Артур, расскажи плиз поподробнее про твой реальный пример, мне так будет проще въехать в суть.

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

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

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #76 - 14. Мая 2010 :: 07:00
Печать  
artbear писал(а) 14. Мая 2010 :: 04:27:
А все-таки что скажете об этой проблеме?

Честно говоря, мне вобще не ясна суть проблемы. Ты что тестируешь? Реализацию метода Выполнить() в платформе?
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #77 - 14. Мая 2010 :: 07:09
Печать  
Палыч писал(а) 14. Мая 2010 :: 07:00:
artbear писал(а) 14. Мая 2010 :: 04:27:
А все-таки что скажете об этой проблеме?

Честно говоря, мне вобще не ясна суть проблемы. Ты что тестируешь? Реализацию метода Выполнить() в платформе?

Изначально хотел протестировать работу кода, выполняемого внутри Выполнить.
Можно тестировать результаты работы кода, например, изменения в БД - этот способ работает.
А иногда нужно проверить код, который не должен выполниться или выполниться с ошибкой, вот в этом случае есть указанные проблемы.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #78 - 14. Мая 2010 :: 07:28
Печать  
Т.е. это скрипты, которые хранятся в базе? Я правильно понял?
  
Наверх
ICQ  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #79 - 14. Мая 2010 :: 12:52
Печать  
Я понял. Причина закопана вот тут: http://www.1cpp.ru/bugs/show_bug.cgi?id=4437
Мое мнение - на данном этапе проблема скорее синтетическая, чем реальная.
  
Наверх
www  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #80 - 14. Мая 2010 :: 13:49
Печать  
fez писал(а) 14. Мая 2010 :: 12:52:
Я понял. Причина закопана вот тут: http://www.1cpp.ru/bugs/show_bug.cgi?id=4437
Мое мнение - на данном этапе проблема скорее синтетическая, чем реальная.

Да, точно, на этих тестах и был обнаружен данный баг Улыбка а уж потом мне в своей конфе потребовалось Улыбка
С твоим мнением не согласен, я считаю, что сабжевые методы в 8-ке практически бесполезны и пригодятся только для копи-паста в собственный код проверки.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #81 - 14. Мая 2010 :: 14:23
Печать  
artbear писал(а) 14. Мая 2010 :: 13:49:
а уж потом мне в своей конфе потребовалось Улыбка

Пример, ну пожалуйста...
  
Наверх
www  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #82 - 18. Мая 2010 :: 11:45
Печать  
fez писал(а) 14. Мая 2010 :: 14:23:
artbear писал(а) 14. Мая 2010 :: 13:49:
а уж потом мне в своей конфе потребовалось Улыбка

Пример, ну пожалуйста...

Ну вот только что опять нарвался.
Мне нужно проверить, что документ не провелся.
Код проведения
Цитата:
           докОбъект.Записать(РежимЗаписиДокумента.Проведение);

Использую тестовое утверждение
Цитата:
           строкаВыполненияПроведения = "докОбъект.Записать(РежимЗаписиДокумента.Проведение)";
           Я_Тест.ПроверитьНеВыполнилось(строкаВыполненияПроведения, "", "провелся Печаль");

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

ЗЫ ПроверитьМетодНеВыполнился также не подходит, т.к в нем нет параметров.
ИМХО нужно добавить метод, который lustin выложил в ветке выше.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #83 - 18. Мая 2010 :: 12:11
Печать  
artbear
Что-то мне не совсем понятно, а зачем здесь Выполнить()?
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #84 - 18. Мая 2010 :: 12:56
Печать  
Палыч писал(а) 18. Мая 2010 :: 12:11:
Что-то мне не совсем понятно, а зачем здесь Выполнить()?

А как проверить, что документ не провелся при выполнение Записать ?
ИМХО либо закидывать в попытку и анализировать, что равносильно развертке ПроверитьНеВыполнилось, как сейчас и работаю,
либо через Выполнить и также в попытке.
Неужели еще есть варианты ? Улыбка

Пытался упростить код проверки через ПроверитьНеВыполнилось, но не получается, в чем и есть баг Печаль
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #85 - 18. Мая 2010 :: 15:13
Печать  
artbear писал(а) 18. Мая 2010 :: 11:45:
ИМХО нужно добавить метод, который lustin выложил в ветке выше.

Вот это - верное предложение. Только его допилить нужно. Чтобы количество параметров было неограниченным, чтобы был аналогичное утверждение на невыполнение, ну и тесты на оба.

А Выполнить() к данной ситуации не имеет никакого отношения, как мне кажется.
  
Наверх
www  
IP записан
 
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #86 - 18. Мая 2010 :: 16:07
Печать  
artbear писал(а) 18. Мая 2010 :: 12:56:
А как проверить, что документ не провелся при выполнение Записать ?

Ну, как минимум, нужно проверять описание исключения, чтобы убедиться, что именно документ не провелся. Об этом я писал выше, в своем примере. Ведь смысл теста не в том, что произошло исключение, а в том, что произошло именно ожидаемое исключение.
Поэтому, если уж ты хочешь компактности в коде тестов, нужен метод проверяющий ОписаниеИсключения() на соответствие ожидаемому. А проведение в попытке - это тело теста, его не стОит выносить в универсальную функцию.
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #87 - 19. Мая 2010 :: 05:03
Печать  
Палыч писал(а) 18. Мая 2010 :: 16:07:
artbear писал(а) 18. Мая 2010 :: 12:56:
А как проверить, что документ не провелся при выполнение Записать ?

Ну, как минимум, нужно проверять описание исключения, чтобы убедиться, что именно документ не провелся. Об этом я писал выше, в своем примере. Ведь смысл теста не в том, что произошло исключение, а в том, что произошло именно ожидаемое исключение.
Поэтому, если уж ты хочешь компактности в коде тестов, нужен метод проверяющий ОписаниеИсключения() на соответствие ожидаемому. А проведение в попытке - это тело теста, его не стОит выносить в универсальную функцию.

Выполнить было применено только в качестве кода для упрощения кода проверки, провелся док или нет.
Понимаешь, при проведении документа тупо выдается не исключение, а сообщение пользователю и стандартный Отказ = Истина внутри модуля проведения.
Т.е. текст исключения для проведения будет всегда будет стандартным, и важен сам факт отказа при проведении.

В результате даже в этом простом примере виден факт неприменимости ПроверитьНеВыполнилось Печаль на реальных задачах.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #88 - 19. Мая 2010 :: 05:19
Печать  
fez писал(а) 18. Мая 2010 :: 15:13:
artbear писал(а) 18. Мая 2010 :: 11:45:
ИМХО нужно добавить метод, который lustin выложил в ветке выше.

Вот это - верное предложение. Только его допилить нужно. Чтобы количество параметров было неограниченным, чтобы был аналогичное утверждение на невыполнение, ну и тесты на оба.

Зарегил ошибку http://www.1cpp.ru/bugs/show_bug.cgi?id=4457
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #89 - 19. Мая 2010 :: 05:29
Печать  
artbear писал(а) 19. Мая 2010 :: 05:03:
Выполнить было применено только в качестве кода для упрощения кода проверки, провелся док или нет.
Понимаешь, при проведении документа тупо выдается не исключение, а сообщение пользователю и стандартный Отказ = Истина внутри модуля проведения.
Т.е. текст исключения для проведения будет всегда будет стандартным, и важен сам факт отказа при проведении.

Что-то мы друг-друга недопонимаем. Улыбка
Как это "тупо выдается не исключение"? Именно исключение и происходит, когда Отказ = истина. Ты же сам далее об этом пишешь. При чем исключение может быть двух типов:
- "Операция не выполнена", когда Отказ = истина;
- все остальные необработанные исключения. Например, при делении на ноль.
Цель теста - выявить что сработал именно Отказ = истина, а не что-то другое.
Т.е., еще раз подчеркну: если мы тестируем обработку отказа в проведении, то проверять мы должны именно это исключение. А все остальные исключения, в правильном коде, возникать, в принципе, не должны. И это тоже проверяется, но уже другими тестами.

Цитата:
В результате даже в этом простом примере виден факт неприменимости ПроверитьНеВыполнилось Печаль на реальных задачах.

Я бы даже сказал он, в принципе, не должен быть востребован никогда.  Смех
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 4 5 [6] 7 8 9
ОтправитьПечать