среда, 6 апреля 2011 г.

Первый опыт использования utPLSQL

Ссылка на первые шаги в документации : http://utplsql.oracledeveloper.nl/doc/fourstep.html

1.Устанавливаем utPLSQL.
Устанавливаем как сказано в разделе "Step 1. Install utPLSQL". Я ставил в отдельного пользователя UTP. Тут важно не забыть прописать отдельно право "GRANT EXECUTE ON DBMS_PIPE TO UTP" (мне сначала прав не хватило, и пакет UTPPIPE не скомпилировался) 

2. Пишем тестовый пакет к собственному пакету.
Тест как в примере "Step 3. Build a test package." Имя тестового пакета =  префикс "UT_" + имя рабочего пакета. Например, рабочий PNX_ENQUERY, тестовый UT_PNX_ENQUERY. префикс можно поменять в настройках. В тестах можно(и нужно) использовать набор утверждений из пакета utAssert, например utAssert.eq(...)

3. Запуск теста
"utPLSQL.test('PNX_ENQUERY',recompile_in => FALSE);". Заметьте, что PNX_ENQUERY - имя рабочего пакета.
Засада :
В документации написано так, что я полтора дня угробил пока понял как это запускать после внесения изменений. Итак, если править тестовый пакет, и без выхода из сессии(сеанса) пробовать запустить тесты, то будет всё-время ошибка на уровне пакетов utPLSQL. Поэтому, логично будет править в обычном режиме - и рабочий и тестовый пакеты, а вот для запуска я написал простенький скрипт, который запускает отдельную сессию SQLPlus и выполняет тесты в ней, отписывая результаты в локальный файл.
Вот так, например :
bat-ник:
sqlplus scott/tiger@(DESCRIPTION...) @splus_exec.sql
splus_exec.sql:
set serveroutput on
spool c:\Temp\aaa.txt
exec utPLSQL.test('PNX_ENQUERY',recompile_in => FALSE);
spool off
exit


4. Анализ результатов.
В файле результатов, полученном на выходе, будет большими буквами SUCCESS или FAILURE, и детали, с указанием мест ошибок (и хороших результатов тоже)
Например вот так                                                                              
>    SSSS   U     U   CCC     CCC   EEEEEEE   SSSS     SSSS                    
>   S    S  U     U  C   C   C   C  E        S    S   S    S                   
>  S        U     U C     C C     C E       S        S                         
>   S       U     U C       C       E        S        S                        
>    SSSS   U     U C       C       EEEE      SSSS     SSSS                    
>        S  U     U C       C       E             S        S                   
>         S U     U C     C C     C E              S        S                  
>   S    S   U   U   C   C   C   C  E        S    S   S    S                   
>    SSSS     UUU     CCC     CCC   EEEEEEE   SSSS     SSSS                    
SUCCESS: "PNX_ENQUERY"                                                         
> Individual Test Case Results:                                                
>                                                                              
SUCCESS - PNX_ENQUERY.UT_GETUNITS: EQ "Всё ок..." Expected "1" and got "1"

Комментариев нет:

Отправить комментарий