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


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

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
24. Февраля 2010 :: 13:00
Печать  
В папке Modules лежит текст общего модуля, который нужно добавить в конфигурацию. Имя - Я_Тест.
В корне лежит обработка, с помощью которой нужно запускать тесты.
При запуске этой обработке ей нужно указать каталог, где лежат тесты (например Tests из архива). Обработка рекурсивно просмотрит эту папочку и все найденные тесты добавит в дерево. Ну и дальше их можно будет выполнить.
В папочке Tests лежит единственная обработка с тестами-примерами.
  

0_021.7z ( 11 KB | Загрузки )
Наверх
www  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


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

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #1 - 25. Февраля 2010 :: 09:19
Печать  
Как обычно, всем http://lurkmore.ru/Все_равно Улыбка
  
Наверх
www  
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3014
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #2 - 25. Февраля 2010 :: 10:51
Печать  
Ну, видимо, твоему основному, из местных, соратнику по тестированию, Артуру, сейчас не до пустяков  Улыбка
  

1&&2&&3
Наверх
IP записан
 
novichek
Экс-Участник


Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #3 - 25. Февраля 2010 :: 13:04
Печать  
Действительно дельные вещи должны "вылежаться" прежде чем обресть признание Улыбка
  
Наверх
 
IP записан
 
lustin
1c++ power user
Отсутствует


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #4 - 25. Февраля 2010 :: 19:18
Печать  
fez писал(а) 25. Февраля 2010 :: 09:19:
Как обычно, всем http://lurkmore.ru/Все_равно Улыбка


не согласен На все равно - я добавил модуль себе в отдельную Подсистему тестирования,

даже добавил ЗапускТестов в конфу предварительно не запустив
однако Обработка ориентирована именно на запуск как внешняя - пришлось удалить Подмигивание и запустить уже как файл

вообще прикольно получилось - тут же закрыл Экспортные методы своих общих модулей.
и еще что-то по мелочи - типа проверку ИНН на контрольные цифры.





  

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


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

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #5 - 25. Февраля 2010 :: 19:44
Печать  
lustin писал(а) 25. Февраля 2010 :: 19:18:
однако Обработка ориентирована именно на запуск как внешняя - пришлось удалить Подмигивание и запустить уже как файл
Ну это ей не критично. Если придумать, какой каталог показать в самом начале - то можно и отвязать ее от внешности. Есть какие-нибудь разумные идеи? Каталога БД теперь ведь нету Подмигивание

lustin писал(а) 25. Февраля 2010 :: 19:18:
вообще прикольно получилось - тут же закрыл Экспортные методы своих общих модулей.

Сначала подумал, что "закрыл" = "убрал экспорт" Улыбка

lustin писал(а) 25. Февраля 2010 :: 19:18:
и еще что-то по мелочи - типа проверку ИНН на контрольные цифры.

О. Поделись.

P.S. На старой работе около ста тестов, которые проверяют корректность номера ГТД Улыбка
  
Наверх
www  
IP записан
 
lustin
1c++ power user
Отсутствует


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #6 - 26. Февраля 2010 :: 11:54
Печать  
если сами функции по проверке ИНН то собственно вот они

Код
Выбрать все
Функция ПолучитьМассивЧиселИзСимволовСтроки(строкаСимволов)
	длинаМассива = СтрДлина(строкаСимволов);
	массивЭлементовСтроки = Новый Массив(длинаМассива);
	Для счЭлементов = 0 по длинаМассива-1 Цикл
		анализируемыйСимвол = Сред(строкаСимволов,счЭлементов+1,1);
		массивЭлементовСтроки[счЭлементов] =
                     Число(?(ПустаяСтрока(СокрЛП(анализируемыйСимвол)),"0",анализируемыйСимвол ) );
	КонецЦикла;
	Возврат массивЭлементовСтроки;
КонецФункции


Функция ИННКорректен(строкаИНН, СтрокаПроверки = "")
		мци = ПолучитьМассивЧиселИзСимволовСтроки(строкаИНН);
		///мци = массивЦифрИНН; //для удобства чтения кода - кажется я загнался ;-)
		    //  массивЦифрИНН = ""; //чтобы не было циклической ссылки
		Если мци.Количество() = 10 Тогда
	    	контрольнаяЦифра =
				 (2*мци[0]+4*мци[1]+10*мци[2]+3*мци[3]+5*мци[4]+9*мци[5]+4*мци[6]+6*мци[7]+8*мци[8])%11;
      		контрольнаяЦифра = ?(контрольнаяЦифра = 10,0,контрольнаяЦифра);
	        Если контрольнаяЦифра = мци[9] Тогда
            	Возврат Истина;
			Иначе
				СтрокаПроверки = "Контрольные цифры ИНН неверны - такого ИНН не может быть согласно Законодательства РФ";
				Возврат Ложь;
			КонецЕсли;
		ИначеЕсли  мци.Количество() = 12 Тогда

       		контрольнаяЦифра =
				(7*мци[0]+2*мци[1]+4*мци[2]+10*мци[3]+3*мци[4]+5*мци[5]+9*мци[6]+4*мци[7]+6*мци[8]+8*мци[9])%11;
	        контрольнаяЦифра = ?(контрольнаяЦифра = 10,0,контрольнаяЦифра);

    	        контрольнаяЦифра2 = (3*мци[0]+7*мци[1]+2*мци[2]+4*мци[3]+10*мци[4]+3*мци[5]+5*мци[6]+9*мци[7]+4*мци[8]+6*мци[9]+8*мци[10])%11;
        	контрольнаяЦифра2 = ?(контрольнаяЦифра2 = 10,0,контрольнаяЦифра2);

        	Если контрольнаяЦифра = мци[10] И контрольнаяЦифра2 =мци[11] Тогда
            	Возврат Истина;
			Иначе
				СтрокаПроверки = "<p>Контрольные цифры ИНН неверны - такого ИНН не может быть согласно Законодательства РФ</p>";
				Возврат Ложь;
			КонецЕсли;
 		Иначе
		    СтрокаПроверки = "<p>Длина введенного ИНН неверна - необходимо указать ИНН состоящий из 10 или 12 цифр </p>";
    		Возврат Ложь;
		КонецЕСли;
    КонецЕсли;

КонецФункции

 



формат строки ошибки HTML текст

соответственно через ПроверитьЛожь() и Проверить() я и сделал проверки ИНН - пока написал массив из 30 гарантированно неправильных и 30 гарантированно правильных.
  

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


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

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #7 - 26. Февраля 2010 :: 12:01
Печать  
lustin писал(а) 26. Февраля 2010 :: 11:54:
Код
Выбрать все
                массивЦифрИНН = ""; //чтобы не было циклической ссылки
		Если массивЦифрИНН.Количество() = 10 Тогда
 



Я извиняюсь, а как это работает?
  
Наверх
www  
IP записан
 
lustin
1c++ power user
Отсутствует


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #8 - 26. Февраля 2010 :: 12:06
Печать  
fez писал(а) 26. Февраля 2010 :: 12:01:
lustin писал(а) 26. Февраля 2010 :: 11:54:
Код
Выбрать все
                массивЦифрИНН = ""; //чтобы не было циклической ссылки
		Если массивЦифрИНН.Количество() = 10 Тогда
 



Я извиняюсь, а как это работает?


тьфу ты, это я руками Федор уже на форуме вставил без проверки.

я когда скопипастил увидел что
Код
Выбрать все
 массивЦифрИНН = ПолучитьМассивЧиселИзСимволовСтроки(строкаИНН);
 мци = массивЦифрИНН; //для удобства чтения кода
 



как то подозрительно на утечку тянет
  

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


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

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #9 - 26. Февраля 2010 :: 12:10
Печать  
Тогда почему сразу не
мци = ПолучитьМассивЧиселИзСимволовСтроки(строкаИНН);
? Подмигивание
  
Наверх
www  
IP записан
 
lustin
1c++ power user
Отсутствует


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #10 - 26. Февраля 2010 :: 12:12
Печать  
fez писал(а) 26. Февраля 2010 :: 12:10:
Тогда почему сразу не
мци = ПолучитьМассивЧиселИзСимволовСтроки(строкаИНН);
? Подмигивание

я поправил верхний текст... Смущённый

я когда писал, написал переменную полностью, потом посмотрел что массивЧиселСтрок слишком длинно - изменил присвоением, недавно почитал комментарии steban'а об утечках на Инфостарте, и сейчас увидел - и еще одну строку добавил прямо на форуме

кажется я загнался  Язык
  

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #11 - 26. Февраля 2010 :: 13:06
Печать  
Действительно, пока что некогда в детали вдаваться
Работу Федора по-быстрому посмотрел, сделано хорошо Улыбка
но нужно развивать - пока только внешние обработки, а где отчеты, другие метаданные? нет возможности задания произвольных юнит-тестов в виде кусков кода

По ИНН - вижу сразу недочеты кода Улыбка
нет проверки на пустую строку ИНН Улыбка - я не знаю, как 1С8 отреагирует на код Новый Массив(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 записан
 
lustin
1c++ power user
Отсутствует


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #12 - 26. Февраля 2010 :: 13:55
Печать  
artbear писал(а) 26. Февраля 2010 :: 13:06:
нет проверки на пустую строку ИНН Улыбка - я не знаю, как 1С8 отреагирует на код Новый Массив(0) Печаль


и тут же родился тест
Цитата:
Я_Тест.ПроверитьЛожь(ИННКорректен(""),"ошибка проверки корректности пустой строки ИНН");


и он не прошел  Улыбка (недопустимое значение параметра Массив(0))


  

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


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

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #13 - 26. Февраля 2010 :: 14:17
Печать  
artbear писал(а) 26. Февраля 2010 :: 13:06:
пока только внешние обработки [...] нет возможности задания произвольных юнит-тестов в виде кусков кода

Постой-ка, а что тебе мешает во внешней обработке написать юнит-тест в виде куска кода? Собственно, я именно для этого это все и написал.
  
Наверх
www  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #14 - 01. Марта 2010 :: 15:56
Печать  
lustin писал(а) 26. Февраля 2010 :: 13:55:
и тут же родился тест

и он не прошел  Улыбка (недопустимое значение параметра Массив(0))

Общий коммент по написанию тестов
1. твой тест должен был сразу родиться Улыбка - у меня, как я писал, сразу Улыбка
2. он должен быть родиться еще до твоего кода Улыбка
  

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] 2 3 ... 9
ОтправитьПечать