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


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

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #90 - 19. Мая 2010 :: 10:55
Печать  
Палыч писал(а) 19. Мая 2010 :: 05:29:
Цитата:
В результате даже в этом простом примере виден факт неприменимости ПроверитьНеВыполнилось Печаль на реальных задачах.

Я бы даже сказал он, в принципе, не должен быть востребован никогда.  Смех

К слову. ПроверитьНеВыполнилось проверяет не только факт того, что код не выполнился, но и проверяет, что он не выполнился с конкретным сообщением об ошибке. Так что все ваши упреки считаю несостоятельными Подмигивание
  
Наверх
www  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #91 - 19. Мая 2010 :: 10:59
Печать  
Федор, я немного не в тему вопрос задам.
А как относятся в твоей новой организации к тому, что бОльшую часть наработок ты выкладываешь в открытый доступ с открытым кодом?
  
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


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

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #92 - 19. Мая 2010 :: 11:07
Печать  
Нормально относятся. Специально этот вопрос обсудили, и решили, что поскольку моя работа не связана с core технологиями моей компании - то нет проблем.

Собственно, я не единственный тут, кто выкладывает что-то в опенсорс Подмигивание Русская сборка файрфокса и jabber-клиент Я-Онлайн - самые известные примеры.
  
Наверх
www  
IP записан
 
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #93 - 19. Мая 2010 :: 12:37
Печать  
fez писал(а) 19. Мая 2010 :: 10:55:
Палыч писал(а) 19. Мая 2010 :: 05:29:
Цитата:
В результате даже в этом простом примере виден факт неприменимости ПроверитьНеВыполнилось Печаль на реальных задачах.

Я бы даже сказал он, в принципе, не должен быть востребован никогда.  Смех

К слову. ПроверитьНеВыполнилось проверяет не только факт того, что код не выполнился, но и проверяет, что он не выполнился с конкретным сообщением об ошибке. Так что все ваши упреки считаю несостоятельными Подмигивание


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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #94 - 17. Июля 2010 :: 10:54
Печать  
Нарвался на странное поведение SnowTest Печаль
У меня есть несколько подряд запускаемых тестов, в которых проводятся доки и затем получаются необходимые результирующие остатки, которые и тестируются/сверяются с эталоном.
Иногда (и это не очень редко Печаль ) тесты падают и по результатам видно, что остатки не являются точными, а состоят из остатков предыдущих тестов Печаль
т.е. такое впечатление, что транзакция по завершении теста не отменяется, а выполняется далее Печаль
1. все тесты - чистые, и элементы справочников, и сами доки создаются на лету.
2. используется умолчальный режим запуска транзакций для теста.

Что делать?

Вопрос снят - как всегда, неверное написание теста.
Я остатки получал просто на дату, без границы, вот и показывались неверные результаты Печаль
« Последняя редакция: 18. Июля 2010 :: 05:56 - artbear »  

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: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #95 - 19. Июля 2010 :: 04:50
Печать  
Кстати, интересный момент нарисовался при тестировании.
Работаю над тестированием определенной последовательности -
сначала создаю/провожу док1 (Вид1), затем док2 (Вид2), и проверяю остатки по регистрам после дока1 и дока2.
Если проводить документы в оперативном режиме времени, то документы очень часто имеют одну и ту же дату/время, и в последовательности довольно часто второй док (Вид2) стоит раньше, чем док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: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #96 - 28. Июля 2010 :: 14:19
Печать  
Вопрос: какие фабричные методы используете для создания новых элементов справочников и документов?

У меня вот такие аналоги юзаются
Цитата:
Функция ПолучитьНовыйЭлементСправочника(ВидСправочника)
     Результат = Справочники[ВидСправочника].СоздатьЭлемент();
     Попытка
           Результат.Записать();
     Исключение
           ВызватьИсключение "!!! Не удалось создать новый элемент справочника <"+ВидСправочника+"> !!!";
     КонецПопытки;
     Возврат Результат;
КонецФункции

Функция Контрагент(ЗначенияДляЗаполнения = Неопределено)
     видСправочника = "Контрагенты";
     Результат = Справочники[видСправочника].СоздатьЭлемент();
     Результат.УчитыватьПоРегистру065 = Истина;
     
     Если ЗначениеЗаполнено(ЗначенияДляЗаполнения) Тогда
           ЗаполнитьЗначенияСвойств(Результат, ЗначенияДляЗаполнения);
     КонецЕсли;
           артТесты.ПроверитьТип(результат, "СправочникОбъект."+видСправочника, "Не удалось создать <"+видСправочника+">");
     Результат.Записать();
     Возврат результат;
КонецФункции

Функция Выписка(датаДокумента, ШапкаДокумента = Неопределено, ТабличнаяЧасть = Неопределено)
           артТесты.ПроверитьЗаполненность(датаДокумента, "датаДокумента");
           Если ШапкаДокумента <> Неопределено Тогда
                 артТесты.ПроверитьТип(ШапкаДокумента, "Структура", "ТабличнаяЧасть");
           КонецЕсли;
           Если ТабличнаяЧасть <> Неопределено Тогда
                 артТесты.ПроверитьТип(ТабличнаяЧасть, "ТаблицаЗначений", "ТабличнаяЧасть");
           КонецЕсли;
     
     результат = Документы.Выписка.СоздатьДокумент();
     результат.Организация = Константы.ОсновнаяОрганизация.Получить();
     
     естьЗаполненныеСвойства = ЗначениеЗаполнено(ШапкаДокумента);
           //Если НЕ естьЗаполненныеСвойства ИЛИ НЕ ШапкаДокумента.Свойство("Клиент") Тогда
           //      клиентОбъект = Контрагент();
           //      клиент = клиентОбъект.Ссылка;
           //      результат.Клиент = клиент;
           //КонецЕсли;
     
     результат.Дата = датаДокумента;
     Если естьЗаполненныеСвойства Тогда
           ЗаполнитьЗначенияСвойств(результат, ШапкаДокумента);
     КонецЕсли;
     
     результат.УстановитьНовыйНомер("тест");
     
     естьТабличнаяЧасть = ЗначениеЗаполнено(ТабличнаяЧасть);
     Если естьТабличнаяЧасть Тогда
           результат.тч.Загрузить(ТабличнаяЧасть);
                 артТесты.ПроверитьРавенство(ТабличнаяЧасть.Количество(), результат.тч.Количество(), "ТабличнаяЧасть.Количество(), результат.тчДоки.Количество()");
     КонецЕсли;

     результат.Записать();
           Если естьТабличнаяЧасть Тогда
                 артТесты.ПроверитьБольше(результат.тч.Количество(), 0, "результат.тч.Количество()");
           КонецЕсли;
           артТесты.ПроверитьЗаполненность(результат.Ссылка, "Расходная - результат.Ссылка");
     Возврат результат;
КонецФункции


Ну и примеры использования:
Цитата:
     клиентОбъект = Контрагент(Новый Структура("Использовать", Истина));
     клиент = клиентОбъект.Ссылка;
     докВыписка = Выписка(ТекущаяДата(), Новый Структура("Клиент", клиент));
           артТесты.ПроверитьРавенство(докВыписка.Клиент, клиент, "докВыписка.Клиент, клиент");

  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; 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: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #97 - 18. Августа 2010 :: 13:43
Печать  
  
Наверх
www  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #98 - 23. Августа 2010 :: 10:17
Печать  
Федор, решал ли ты вопрос с тестированием отложенных событий форм? Например, тестирование внешних событий или обработок ожидания.

Какие есть мысли по поводу построения подобного тестирования в 8-ке?
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; 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: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #99 - 01. Октября 2010 :: 11:05
Печать  
Нет, не решал. Мыслей нет.
  
Наверх
www  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #100 - 20. Октября 2010 :: 11:18
Печать  
Федор, по поводу выложенных тобой тестов для проверки открытия форм ЮнитТесты_ОткрытиеФормДокументов.epf
Приведенные тобой тесты не всегда точно проверяют открытие форм - не проверяются события, происходящие при/после обновления форм - например, ОбновлениеОтображения, ПриВыводеСтроки, ПриПолученииДанных.
Т.е. тест скажет, что ошибки при открытии формы нет, а при открытии формы пользователем будет ошибка Печаль
Решение - после открытия формы нужно ее обновить, в этом случае ошибка ловится.
Вот код исправления:
Цитата:
Процедура Тест_ОткрытьФормуСуществующегоДокумента(_ИДДокумента) Экспорт
     _Док = Документы[_ИДДокумента].СоздатьДокумент();
     _Док.Дата = ТекущаяДата();
     _Док.Записать();
     Форма = _Док.ПолучитьФорму();
     
     Форма.Открыть();
           Я_Тест.Проверить(Форма.Открыта(), "Форма существующего документа """+_ИДДокумента+""" не открылась, а должна была открыться");
     Форма.Обновить();
КонецПроцедуры

Процедура Тест_ОткрытьФормуНовогоДокумента(_ИДДокумента) Экспорт
     _Док = Документы[_ИДДокумента].СоздатьДокумент();
     Форма = _Док.ПолучитьФорму();
     Форма.Открыть();
           Я_Тест.Проверить(Форма.Открыта(), "Форма нового документа """+_ИДДокумента+""" не открылась, а должна была открыться");
     Форма.Обновить();
КонецПроцедуры


ЗЫ случайно нарвался Улыбка

ЗЗЫ если кому нужно, могу выложить тесты проверки открытия форм элементов и списков справочников, отчетов, обработок, списков документов для SnowTest
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; 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: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #101 - 20. Октября 2010 :: 11:41
Печать  
Можешь поделиться примером такой формы? Это было бы волшебно.
  
Наверх
www  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #102 - 20. Октября 2010 :: 11:46
Печать  
Например, просто в любой форме добавь обработчик события например, ОбновленияОтображения и напиши в нем
ВызватьИсключение "ошибка обновления";

все, твои тесты пройдут, а ручное открытие формы даст ошибку ! Печаль

Случайно нарвался - сделал опечатку в ОбновлениеОтображения, а проверял только через тесты, ошибок не было, а пользователи пожаловались Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; 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: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #103 - 21. Октября 2010 :: 17:51
Печать  
Спасибо, будет время - поковыряю.
  
Наверх
www  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #104 - 28. Июня 2011 :: 07:16
Печать  
Немного доработал работу SnowTest
добавил меню для управления тестами -
  • Обновить все тесты
  • Обновить один тест
  • Снять все флажки
  • Выполнить все тесты
  • Выполнить один тест


При разработке через тесты (TDD) очень удобно использовать только один тест и обновлять только его одного.
Если кому-то нужно, могу выложить свой дополненный вариант.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 5 6 [7] 8 9 
ОтправитьПечать