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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #60 - 23. Апреля 2010 :: 17:42
Печать  
fez писал(а) 23. Апреля 2010 :: 14:39:
ПроверитьВыполнилось() - это полбеды. Там более-менее ясно. Как быть с ПроверитьНеВыполнилось()?

Процедура Тест_ПроверитьНеВыполнилось() Экспорт
     строка = "рез = 1/0";
     Я_Тест.ПроверитьНеВыполнилось(строка, "Деление на 0");
КонецПроцедуры
тест прошел Улыбка

и еще на всякий случай

Процедура Тест_ПроверитьНеВыполнилось_ВыполнимыйКод() Экспорт
     строкаВыполнения = "строка = ""рез = 1"";
     |Я_Тест.ПроверитьНеВыполнилось(строка, ""Деление на 0"");
     |";
     Я_Тест.ПроверитьНеВыполнилось(строкаВыполнения, "Хотели, чтобы код ""рез = 1"" упал, а он выполнился");
КонецПроцедуры
  

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: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #61 - 24. Апреля 2010 :: 06:50
Печать  
fez писал(а) 23. Апреля 2010 :: 14:39:
ПроверитьВыполнилось() - это полбеды. Там более-менее ясно. Как быть с ПроверитьНеВыполнилось()?

ИМХО для обоих методов самое страшное - то, что они неверно работают с контекстом Печаль
например, не проходит следующий тест
Цитата:
Процедура Тесты_ПроверитьВыполнилось_НеверныйКонтекст() Экспорт
     переменнаяЭтогоКонтекста = 2;
     строка = "рез = переменнаяЭтогоКонтекста";
     Я_Тест.ПроверитьВыполнилось(строка);
КонецПроцедуры

потому что модуль Я_Тест ничего не знает о текущем контексте и о переменнаяЭтогоКонтекста.

т.е. ИМХО в общем случае (с разными контекстами) через метод общего модуля проверить работу "Выполнить" нельзя Печаль
Нужно придумать, каким образом можно передать контекст
  

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: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #62 - 25. Апреля 2010 :: 17:38
Печать  
fez писал(а) 23. Апреля 2010 :: 14:20:
Хочу пофлеймить на тему.

Есть утверждение Я_Тест.ПроверитьВыполнить(). В качестве параметра туда приходит некоторая строка, эта строка засовывается в восьмерочное Выполнить(), если Выполнить выполнилось без ошибок - утверждение утверждает. Если нет - выдает диагностику.

Как правильно написать тест на данный участок кода?


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

Процедура Тест_ПроверитьНеВыполнилось() Экспорт

     сиг = "некаяУникальнаяСигнатура";
     былоИсключение = ложь;

     попытка
       Я_Тест.ПроверитьНеВыполнилось("ВызватьИсключение(" + сиг + ")");
     исключение
        искл = ОписаниеИсключения();
        былоИсключение = истина;
     конецПопытки;

     если не былоИсключение или не __Строка.Содержит(стр, сиг) тогда
        ВызватьИсключение("Исключение не всплывает"); // и прочая диагностика
     конецЕсли;

КонецПроцедуры
  
Наверх
ICQ  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


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

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #63 - 26. Апреля 2010 :: 10:20
Печать  
artbear писал(а) 23. Апреля 2010 :: 17:42:
fez писал(а) 23. Апреля 2010 :: 14:39:
ПроверитьВыполнилось() - это полбеды. Там более-менее ясно. Как быть с ПроверитьНеВыполнилось()?

Процедура Тест_ПроверитьНеВыполнилось() Экспорт
     строка = "рез = 1/0";
     Я_Тест.ПроверитьНеВыполнилось(строка, "Деление на 0");
КонецПроцедуры
тест прошел Улыбка

У тебя осталась непокрытой тестом ветка Исключение.
Палыч правильно написал. Только меня немного смущает, что код теста практически дублирует тестируемый код.
  
Наверх
www  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


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

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #64 - 26. Апреля 2010 :: 10:21
Печать  
Палыч писал(а) 25. Апреля 2010 :: 17:38:
Должен признаться, что не могу придумать ситуацию, где бы понадобилось такая сложная конструкция. Улыбка

Ну это... как сказать... академический интерес Улыбка Стремление к прекрасному, наверное Улыбка
  
Наверх
www  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #65 - 26. Апреля 2010 :: 10:51
Печать  
fez писал(а) 26. Апреля 2010 :: 10:20:
artbear писал(а) 23. Апреля 2010 :: 17:42:
fez писал(а) 23. Апреля 2010 :: 14:39:
ПроверитьВыполнилось() - это полбеды. Там более-менее ясно. Как быть с ПроверитьНеВыполнилось()?

Процедура Тест_ПроверитьНеВыполнилось() Экспорт
     строка = "рез = 1/0";
     Я_Тест.ПроверитьНеВыполнилось(строка, "Деление на 0");
КонецПроцедуры
тест прошел Улыбка

У тебя осталась непокрытой тестом ветка Исключение.

Где осталась?
Цитата из поста выше
Цитата:
и еще на всякий случай

Процедура Тест_ПроверитьНеВыполнилось_ВыполнимыйКод() Экспорт
     строкаВыполнения = "строка = ""рез = 1"";
     |Я_Тест.ПроверитьНеВыполнилось(строка, ""Деление на 0"");
     |";
     Я_Тест.ПроверитьНеВыполнилось(строкаВыполнения, "Хотели, чтобы код ""рез = 1"" упал, а он выполнился");
КонецПроцедуры

  

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: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #66 - 26. Апреля 2010 :: 13:27
Печать  
А, вчитался. Как-то мне идея тестировать код с помощью его же самого... ну не внушает.
  
Наверх
www  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #67 - 26. Апреля 2010 :: 14:02
Печать  
fez писал(а) 26. Апреля 2010 :: 13:27:
Как-то мне идея тестировать код с помощью его же самого... ну не внушает.

А вспомни Бека и его построение системы тестирования в книге Улыбка
  

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: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #68 - 26. Апреля 2010 :: 14:03
Печать  
fez писал(а) 26. Апреля 2010 :: 10:20:
Только меня немного смущает, что код теста практически
дублирует тестируемый код.

Вот в моем варианте как раз дублирования и нету Улыбка
  

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: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #69 - 26. Апреля 2010 :: 14:16
Печать  
artbear писал(а) 26. Апреля 2010 :: 14:02:
fez писал(а) 26. Апреля 2010 :: 13:27:
Как-то мне идея тестировать код с помощью его же самого... ну не внушает.

А вспомни Бека и его построение системы тестирования в книге Улыбка

Напомни. Не люблю отсылок к авторитетам Улыбка
  
Наверх
www  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #70 - 27. Апреля 2010 :: 03:41
Печать  
fez писал(а) 26. Апреля 2010 :: 14:16:
artbear писал(а) 26. Апреля 2010 :: 14:02:
fez писал(а) 26. Апреля 2010 :: 13:27:
Как-то мне идея тестировать код с помощью его же самого... ну не внушает.

А вспомни Бека и его построение системы тестирования в книге Улыбка

Напомни. Не люблю отсылок к авторитетам Улыбка

Он разработку собственной системы тестирования ведет с помощью тестирования на базе этой же разработки
  

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: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #71 - 27. Апреля 2010 :: 08:15
Печать  
Против такого масштабного самотестирования я не возражаю. Но тестировать процедуру самой собой... такое есть у Бека?
  
Наверх
www  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


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

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #72 - 13. Мая 2010 :: 17:01
Печать  
Выложил 0.073. http://www.1cpp.ru/forum/YaBB.pl?num=1273769981/0#0

Добавил возможность указания произвольного имени тесту.
Добавил много внутренних тестов. Но эта часть работы еще не закончена.
Общее причесывание.
  
Наверх
www  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #73 - 14. Мая 2010 :: 04:27
Печать  
artbear писал(а) 24. Апреля 2010 :: 06:50:
fez писал(а) 23. Апреля 2010 :: 14:39:
ПроверитьВыполнилось() - это полбеды. Там более-менее ясно. Как быть с ПроверитьНеВыполнилось()?

ИМХО для обоих методов самое страшное - то, что они неверно работают с контекстом Печаль
например, не проходит следующий тест
Цитата:
Процедура Тесты_ПроверитьВыполнилось_НеверныйКонтекст() Экспорт
     переменнаяЭтогоКонтекста = 2;
     строка = "рез = переменнаяЭтогоКонтекста";
     Я_Тест.ПроверитьВыполнилось(строка);
КонецПроцедуры

потому что модуль Я_Тест ничего не знает о текущем контексте и о переменнаяЭтогоКонтекста.

т.е. ИМХО в общем случае (с разными контекстами) через метод общего модуля проверить работу "Выполнить" нельзя Печаль
Нужно придумать, каким образом можно передать контекст

А все-таки что скажете об этой проблеме?
лично мне из-за этой проблемы сейчас приходится код ПроверитьВыполнилось/НеВыполнилось разворачивать непосредственно в месте, где запускается Выполнить Печаль
другого варианта пока не нашел Печаль
  

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: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #74 - 14. Мая 2010 :: 05:13
Печать  
О, а я думал, что это синтетическая проблема и особо в нее не вникал. Артур, расскажи плиз поподробнее про твой реальный пример, мне так будет проще въехать в суть.
  
Наверх
www  
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 3 4 [5] 6 7 ... 9
ОтправитьПечать