Инструменты пользователя

Инструменты сайта


wiki:devel:parser:test:simple_test

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
wiki:devel:parser:test:simple_test [2025/01/16 18:16] – создано vladpolskiywiki:devel:parser:test:simple_test [2025/02/01 09:53] (текущий) – внешнее изменение 127.0.0.1
Строка 23: Строка 23:
 </code> </code>
  
-Здесь папка //simpletest// либо локальная, либо находится в пути. Вам придется отредактировать эти расположения в зависимости от того, где вы разместили набор инструментов. <color #22b14c>TestOfLogging</color> — наш первый тестовый случай, и в настоящее время он пуст. +Здесь папка //simpletest// либо локальная, либо находится в пути. Вам придется отредактировать эти расположения в зависимости от того, где вы разместили набор инструментов. <fc #22b14c>TestOfLogging</fc> — наш первый тестовый случай, и в настоящее время он пуст. 
-Теперь у нас есть пять строк кода scaffolding и все еще нет тестов. Однако с этой части мы получаем возврат наших инвестиций очень быстро. Предположим, что класс <color #22b14c>Log</color> принимает имя файла для записи в конструкторе, и у нас есть временная папка, в которую можно поместить этот файл...+Теперь у нас есть пять строк кода scaffolding и все еще нет тестов. Однако с этой части мы получаем возврат наших инвестиций очень быстро. Предположим, что класс <fc #22b14c>Log</fc> принимает имя файла для записи в конструкторе, и у нас есть временная папка, в которую можно поместить этот файл...
  
 <code php> <code php>
Строка 45: Строка 45:
 </code> </code>
  
-При запуске тестового случая он ищет любой метод, начинающийся со строки <color #22b14c>test</color>, и выполняет этот метод. Обычно у нас, конечно, больше одного тестового метода. Утверждения в тестовых методах запускают сообщения в тестовую среду, которая немедленно отображает результат. Этот немедленный ответ важен не только в случае, если код вызывает сбой, но и для того, чтобы операторы <color #22b14c>print</color> могли отображать свое содержимое прямо рядом с соответствующим тестовым случаем.+При запуске тестового случая он ищет любой метод, начинающийся со строки <fc #22b14c>test</fc>, и выполняет этот метод. Обычно у нас, конечно, больше одного тестового метода. Утверждения в тестовых методах запускают сообщения в тестовую среду, которая немедленно отображает результат. Этот немедленный ответ важен не только в случае, если код вызывает сбой, но и для того, чтобы операторы <fc #22b14c>print</fc> могли отображать свое содержимое прямо рядом с соответствующим тестовым случаем.
  
 Чтобы увидеть эти результаты, нам нужно запустить тесты. Если это единственный тестовый случай, который мы хотим запустить, мы можем добиться этого с помощью... Чтобы увидеть эти результаты, нам нужно запустить тесты. Если это единственный тестовый случай, который мы хотим запустить, мы можем добиться этого с помощью...
Строка 77: Строка 77:
 **testoflogging**\\   **testoflogging**\\  
 Fail: testcreatingnewfile->True assertion failed.\\   Fail: testcreatingnewfile->True assertion failed.\\  
-<color white/red>1/1 test cases complete. 1 passes and 1 fails.</color>+<fc white/red>1/1 test cases complete. 1 passes and 1 fails.</fc>
 </note> </note>
  
Строка 84: Строка 84:
 <note> <note>
 **testoflogging**\\   **testoflogging**\\  
-<color white/green>1/1 test cases complete. 2 passes and 0 fails.</color>+<fc white/green>1/1 test cases complete. 2 passes and 0 fails.</fc>
 </note> </note>
  
 И если вы это получите... И если вы это получите...
  
-<note> +<code
-**testoflogging**\\   +Fatal error: Failed opening required '../classes/log.php' (include_path='') in 
-Fatal error: Failed opening required '../classes/log.php' (include_path='') in\\   /home/marcus/projects/lastcraft/tutorial_tests/Log/tests/log_test.php on line 7 +/home/marcus/projects/lastcraft/tutorial_tests/Log/tests/log_test.php on line 7 
-</note>+</code>
  
 это означает, что у вас отсутствует файл //classes/Log.php//, который может выглядеть так... это означает, что у вас отсутствует файл //classes/Log.php//, который может выглядеть так...
Строка 115: Строка 115:
 Наш первый шаг — удалить включения и отменить наш предыдущий взлом... Наш первый шаг — удалить включения и отменить наш предыдущий взлом...
  
-<?php +<code php> 
 +<?php
 require_once('../classes/log.php'); require_once('../classes/log.php');
  
-класс TestOfLogging расширяет UnitTestCase {+class TestOfLogging extends UnitTestCase {
          
-    функция testCreatingNewFile() {+    function testCreatingNewFile() {
         @unlink('/temp/test.log');         @unlink('/temp/test.log');
-        $log = новый Журнал('/temp/test.log');+        $log = new Log('/temp/test.log');
         $this->assertFalse(file_exists('/temp/test.log'));         $this->assertFalse(file_exists('/temp/test.log'));
-        $log->message('Нужно записать это в файл');+        $log->message('Should write this to a file');
         $this->assertTrue(file_exists('/temp/test.log'));         $this->assertTrue(file_exists('/temp/test.log'));
     }     }
 } }
 ?> ?>
 +</code>
 +
  
 Далее мы создаем новый файл с именем ''tests/all_tests.php'' и вставляем следующий код... Далее мы создаем новый файл с именем ''tests/all_tests.php'' и вставляем следующий код...
Строка 143: Строка 146:
 </code> </code>
  
-Метод <color #22b14c>GroupTest::addTestFile()</color> включит файл тестового случая и прочитает все новые созданные классы, которые являются потомками <color #22b14c>SimpleTestCase</color>, одним из примеров которых является <color #22b14c>UnitTestCase</color>. На данный момент сохраняются только имена классов, чтобы тестовый исполнитель мог создать экземпляр класса, когда он будет проходить через ваш тестовый набор. +Метод <fc #22b14c>GroupTest::addTestFile()</fc> включит файл тестового случая и прочитает все новые созданные классы, которые являются потомками <fc #22b14c>SimpleTestCase</fc>, одним из примеров которых является <fc #22b14c>UnitTestCase</fc>. На данный момент сохраняются только имена классов, чтобы тестовый исполнитель мог создать экземпляр класса, когда он будет проходить через ваш тестовый набор. 
-Чтобы это работало правильно, файл тестового случая не должен слепо включать какие-либо другие расширения тестового случая, которые на самом деле не запускают тесты. Это может привести к подсчету дополнительных тестовых случаев во время тестового прогона. Вряд ли это серьезная проблема, но чтобы избежать этого неудобства, просто добавьте директиву <color #22b14c>SimpleTestOptions::ignore()</color> где-нибудь в файле тестового случая. Кроме того, файл тестового случая не должен был быть включен в другом месте, иначе в этот групповой тест не будут добавлены случаи. Это будет более серьезной ошибкой, так как если классы тестового случая уже загружены PHP, метод <color #22b14c>GroupTest::addTestFile()</color> не обнаружит их.+Чтобы это работало правильно, файл тестового случая не должен слепо включать какие-либо другие расширения тестового случая, которые на самом деле не запускают тесты. Это может привести к подсчету дополнительных тестовых случаев во время тестового прогона. Вряд ли это серьезная проблема, но чтобы избежать этого неудобства, просто добавьте директиву <fc #22b14c>SimpleTestOptions::ignore()</fc> где-нибудь в файле тестового случая. Кроме того, файл тестового случая не должен был быть включен в другом месте, иначе в этот групповой тест не будут добавлены случаи. Это будет более серьезной ошибкой, так как если классы тестового случая уже загружены PHP, метод <fc #22b14c>GroupTest::addTestFile()</fc> не обнаружит их.
  
 Для отображения результатов необходимо только вызвать //tests/all_tests.php// с веб-сервера. Для отображения результатов необходимо только вызвать //tests/all_tests.php// с веб-сервера.
Строка 151: Строка 154:
 Давайте перенесемся еще дальше в будущее. Давайте перенесемся еще дальше в будущее.
  
-Предположим, что наш класс логирования протестирован и завершен. Предположим также, что мы тестируем другой класс, который требуется для записи сообщений журнала, скажем, <color #22b14c>SessionPool</color>. Мы хотим протестировать метод, который, вероятно, в конечном итоге будет выглядеть так...+Предположим, что наш класс логирования протестирован и завершен. Предположим также, что мы тестируем другой класс, который требуется для записи сообщений журнала, скажем, <fc #22b14c>SessionPool</fc>. Мы хотим протестировать метод, который, вероятно, в конечном итоге будет выглядеть так...
  
 <code php> <code php>
Строка 165: Строка 168:
 </code> </code>
  
-В духе повторного использования мы используем наш класс <color #22b14c>Log</color>. Обычный тестовый случай может выглядеть так...+В духе повторного использования мы используем наш класс <fc #22b14c>Log</fc>. Обычный тестовый случай может выглядеть так...
  
 <code php> <code php>
Строка 219: Строка 222:
 </code> </code>
  
-Тест будет запущен, когда вызов <color #22b14c>message()</color> будет вызван на объекте <color #22b14c>MockLog</color>. Вызов mock запустит сравнение параметров, а затем отправит результирующее событие pass или fail на дисплей теста. Здесь также можно включить подстановочные знаки, чтобы тесты не стали слишком конкретными. +Тест будет запущен, когда вызов <fc #22b14c>message()</fc> будет вызван на объекте <fc #22b14c>MockLog</fc>. Вызов mock запустит сравнение параметров, а затем отправит результирующее событие pass или fail на дисплей теста. Здесь также можно включить подстановочные знаки, чтобы тесты не стали слишком конкретными. 
-Если мок достигает конца тестового случая без вызова метода, ожидание <color #22b14c>expectOnce()</color> вызовет сбой теста. Другими словами, мок может обнаружить как отсутствие поведения, так и его наличие.+Если мок достигает конца тестового случая без вызова метода, ожидание <fc #22b14c>expectOnce()</fc> вызовет сбой теста. Другими словами, мок может обнаружить как отсутствие поведения, так и его наличие.
  
 Для фиктивных объектов в наборе SimpleTest можно задать произвольные возвращаемые значения, последовательности возвращаемых значений, возвращаемые значения, выбранные в соответствии с входящими аргументами, последовательности ожидаемых параметров и ограничения на количество вызовов метода. Для фиктивных объектов в наборе SimpleTest можно задать произвольные возвращаемые значения, последовательности возвращаемых значений, возвращаемые значения, выбранные в соответствии с входящими аргументами, последовательности ожидаемых параметров и ограничения на количество вызовов метода.
Строка 259: Строка 262:
 =====Дополнения и Файлы===== =====Дополнения и Файлы=====
   * [[http://web.archive.org/web/20070814114708/http://www.lastcraft.com/simple_test.php#unit|Ссылка на оригинальную статью]]   * [[http://web.archive.org/web/20070814114708/http://www.lastcraft.com/simple_test.php#unit|Ссылка на оригинальную статью]]
 +  * [[https://simpletest.sourceforge.net/en/start-testing.html|simpletest.sourceforge.net]]
   * [[https://github.com/simpletest/simpletest|github_simpletest]]   * [[https://github.com/simpletest/simpletest|github_simpletest]]
   * {{ :wiki:devel:parser:test:simpletest-main.zip |SimpleTest}}   * {{ :wiki:devel:parser:test:simpletest-main.zip |SimpleTest}}
wiki/devel/parser/test/simple_test.1737040616.txt.gz · Последнее изменение: vladpolskiy