powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / %UnitTest использует кто-нибудь?
11 сообщений из 11, страница 1 из 1
%UnitTest использует кто-нибудь?
    #36935223
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если да, то не могли бы поделиться впечатлениями, результатами, наработками?
...
Рейтинг: 0 / 0
%UnitTest использует кто-нибудь?
    #36935284
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Немного информации можно найти здесь .
...
Рейтинг: 0 / 0
%UnitTest использует кто-нибудь?
    #36936403
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как создать файл для тестов вроде понятно... А вот как там с классами всякие сообщения писать что-то так и не дошло...
Может действительно просвятит кто? Чтение ссылок ничего особенно и не дало.
...
Рейтинг: 0 / 0
%UnitTest использует кто-нибудь?
    #36936752
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa ,

У Вас получилось пройти %UnitTest Tutorial ?

kolesov ,

Кроме класса %UnitTest.TestCase могут оказаться полезными дополнительные классы: %UnitTest.TestCacheScript , %UnitTest.TestSqlScript , %UnitTest.TestProduction и другие. Примеры по их использованию можно найти в Caché Documatic .
Unit Testing with %UnitTest, Perforce, and Studio

PS: список незначительных изменений пакета %UnitTest в версии 2010.2 .
...
Рейтинг: 0 / 0
%UnitTest использует кто-нибудь?
    #36937253
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servitУ Вас получилось пройти %UnitTest Tutorial ?
Читал документацию... Но в аглицком не силён... :(( После праздников почитаю что по ссылке.

servit %UnitTest.TestCacheScript
Вот этим вроде понял как пользоваться.
...
Рейтинг: 0 / 0
%UnitTest использует кто-нибудь?
    #36937269
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit , посмотрел по ссылке - та же документация, только по 2010... И как к такому можно применить термин "пройти"?

Насколько я помню у ИС даже примеры по ЗЕНу, которые были писаны на русском, пройти не могли не только с первого но и более чем с 10-го раза. Т.к. там было много ошибок.
А тут мне напрмер вообще мало чего понятно.

Может ко просвятит на простом примере?
Вот у меня например есть ряд процедур и функций... Я хочу устроить им некий тест с разными параметрами и пр... Как это сделать с помощью %UnitTest.TestCacheScript я вроде как понял...
Пишу в файле из вызов с разными параметрами и если файл обработан до конца - все нормально.

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

Примеров в доке практически ноль...
...
Рейтинг: 0 / 0
%UnitTest использует кто-нибудь?
    #36937593
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По вышеуказанной ссылке описано упражнение шаг за шагом по созданию и использованию %UnitTest.TestCase .

Вот вкратце описание этих шагов:
1) в область "USER" импортируйте и откомпилируйте классы из %Cache%\dev\tutorials\UnitTestEx\UnitTestSolutions.xml ;
2) создайте на диске каталог, например: c:\unittests\krvsa ;
3) экспортируйте класс MyPackage.Tests в каталог c:\unittests\krvsa . Назовите файл, например, Tests.xml ;
4) из терминала вызовите:
Код: plaintext
1.
USER>Set ^UnitTestRoot="c:\unittests"
USER>do ##class(%UnitTest.Manager).RunTest("krvsa")

Если Вы всё сделали правильно, внизу увидите ссылку, по которой можно просмотреть результаты теста, в том числе и удалить устаревшие из них.
Заметьте, что по умолчанию класс MyPackage.Tests после выполнения теста будет удалён из Caché.
Чтобы этого не произошло, используйте дополнительные флаги при вызове теста, например:
Код: plaintext
USER>do ##class(%UnitTest.Manager).RunTest("krvsa","/nodelete")
...
Рейтинг: 0 / 0
%UnitTest использует кто-нибудь?
    #36938519
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit , спасибо!

Кащея дома нет... Пробовать буду после праздников.
Что там в классе MyPackage.Tests ? Там пример того какой именно код нужно тестить? Или что там?
Просо я видел много макросов в классе %UnitTest.TestCase а вот где их писать применительно к моему примеру (тестирование моих процедур или функций) так и не понял...
...
Рейтинг: 0 / 0
%UnitTest использует кто-нибудь?
    #36938709
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaЧто там в классе MyPackage.Tests ? Там пример того какой именно код нужно тестить? Или что там?
MyPackage.Tests
Class MyPackage.Tests Extends %UnitTest.TestCase
{

Method TestAdd()
 {
  do $$$AssertEquals(##class(MyPackage.TestMe).Add(2,2),4, "Test Add(2,2)=4")
  do $$$AssertNotEquals(##class(MyPackage.TestMe).Add(2,2),5,"Test Add(2,2)'=5")
 }

Method TestCreateContact()
 {
  Set name="Smith,John"
  Set type="Business"
 
  Set contact=##class(MyPackage.TestMe).CreateContact(name,type)
 
  Do $$$AssertEquals(contact.Name, name, "Name Assignment")
  Do $$$AssertEquals(contact.ContactType, type, "ContactType Assignment")
 
  Do $$$AssertStatusOK(contact.%Save(),"Saving the Contact")
 }

Method TestEditContact()
 {
  set contact=##class(MyPackage.Contact).%OpenId(1)
  set contact.Name="Rockwell,Norman"
  set contact.ContactType="Friend"
  Do $$$AssertStatusNotOK(contact.%Save(),"ContactType = Friend")
  Set contact.ContactType="Personal"
  Do $$$AssertStatusOK(contact.%Save(),"ContactType = Personal")
 }

Method OnBeforeOneTest(testname As %String) As %Status
 {
  For i=1:1:5
  {
   set contact=##class(MyPackage.Contact).%New()
  
   if (i#2=0)
   {
    set contact.Name="NameP"
    set contact.ContactType="Personal"
    do contact.%Save()
    set contact=""  
   } 
   else
   {
    set contact.Name="NameB"
    set contact.ContactType="Business"
    do contact.%Save()
    set contact=""
    }
  }
  Quit $$$OK
 }

Method TestQuery()
 {
  Set type="Personal"
  Set rs=##class(%Library.ResultSet).%New("MyPackage.Contact:ByContactType")
 
  Do rs.Execute(type)
 
  set i=0
  While (rs.Next()){
   set i=i+1
   set contact=##class(MyPackage.Contact).%OpenId(rs.Data("ID"))
   Do $$$AssertEquals(contact.ContactType, type, "Contact has correct type")
  }
 
  Do $$$AssertEquals(2,i,"RS has correct number of results")
 }

Method OnAfterOneTest(testname As %String) As %Status
 {
  Do ##class(MyPackage.Contact).%KillExtent()
  Quit $$$OK
 }
}
...
Рейтинг: 0 / 0
%UnitTest использует кто-нибудь?
    #36939347
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit , благодарствую.
...
Рейтинг: 0 / 0
%UnitTest использует кто-нибудь?
    #36941493
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servitПо вышеуказанной ссылке описано упражнение шаг за шагом по созданию и использованию %UnitTest.TestCase .
Еще раз спасибо. На работе все попробовал - запустилось и отработало...
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / %UnitTest использует кто-нибудь?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]