Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> (5) Тестирование PHPUnit, Как протекает тест? Где встроить код?
SlavaFr  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
******

Профиль
Журнал
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1535
Пользователь №: 22453
На форуме: 6 лет, 8 месяцев, 21 день
Карма: 104




Тестирование в PHPUnit


Важные методы для проведения Тестов.
PHPUnit запускает свои тесты по определенному принципу.
1) Он берет тестируемый класс и производит статический метод setUpBeforeClass().
Если вы например в каждом тест-методе вашего класса нуждаетесь в какой то инициализации (например конекция с БД.) то делайте эти инициализации переписывая этот метод. Не забывайте, что метод статически и может по этому работать только с статическими переменными.
2) Теперь PHPUnit начинает обрабатывать каждый тест класса, но вызывает перед каждым тестом метод setUp(), а после теста метод tearDown(). Таким образом переписав эти методы вы можете произвести настройки перед тестом и после теста.

3) Когда все тесты класса прошли вызывается статический метод tearDownAfterClass. Переписав этот метод вы можете к примеру привести систему в первоначальное состояние.

Пример из Документации к PHPUnit (http://www.phpunit.de/manual/current/en/fixtures.html):

<?php
class
TemplateMethodsTest extends PHPUnit_Framework_TestCase
{
public static function setUpBeforeClass()
{
fwrite(STDOUT, __METHOD__ . "\n");
}

protected function setUp()
{
fwrite(STDOUT, __METHOD__ . "\n");
}

protected function assertPreConditions()
{
fwrite(STDOUT, __METHOD__ . "\n");
}

public function testOne()
{
fwrite(STDOUT, __METHOD__ . "\n");
$this->assertTrue(TRUE);
}

public function testTwo()
{
fwrite(STDOUT, __METHOD__ . "\n");
$this->assertTrue(FALSE);
}

protected function assertPostConditions()
{
fwrite(STDOUT, __METHOD__ . "\n");
}

protected function tearDown()
{
fwrite(STDOUT, __METHOD__ . "\n");
}

public static function tearDownAfterClass()
{
fwrite(STDOUT, __METHOD__ . "\n");
}

protected function onNotSuccessfulTest(Exception $e)
{
fwrite(STDOUT, __METHOD__ . "\n");
throw $e;
}
}

Теперь видно, последовательность вызова методов.

phpunit TemplateMethodsTest
PHPUnit 3.7.0 by Sebastian Bergmann.

TemplateMethodsTest::setUpBeforeClass
TemplateMethodsTest::setUp
TemplateMethodsTest::assertPreConditions
TemplateMethodsTest::testOne
TemplateMethodsTest::assertPostConditions
TemplateMethodsTest::tearDown
.TemplateMethodsTest::setUp
TemplateMethodsTest::assertPreConditions
TemplateMethodsTest::testTwo
TemplateMethodsTest::tearDown
TemplateMethodsTest::onNotSuccessfulTest
FTemplateMethodsTest::tearDownAfterClass


Time: 0 seconds, Memory: 5.25Mb

There was 1 failure:

1) TemplateMethodsTest::testTwo
Failed asserting that <boolean:false> is true.
/home/sb/TemplateMethodsTest.php:30

FAILURES!
Tests: 2, Assertions: 2, Failures: 1.


========
Предыдущая тема http://phpforum.ru/index.php?showtopic=72206

Следующая Тема "Создание заменяющих объектов (Mock)"


--------------------
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
PMПисьмо на e-mail пользователю
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
qari  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местный житель
****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 176
Пользователь №: 31188
На форуме: 5 лет, 1 месяц, 4 дня
Карма:




продолжение будет?
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
SlavaFr  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
******

Профиль
Журнал
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1535
Пользователь №: 22453
На форуме: 6 лет, 8 месяцев, 21 день
Карма: 104




Цитата (qari @ 23.08.2013 - 21:13)
продолжение будет?

Хороший вопрос... Прошло уже 3 года, как я пообещял продолжить с Мокингом, но не сдержал своё обещание. Наверное придётся найти время и написать маленькую статью по этому поводу.


--------------------
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Invis1ble  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 11847
Пользователь №: 23195
На форуме: 6 лет, 6 месяцев, 29 дней
Карма: 433

Трезвый :
7 лет, 5 месяцев, 29 дней


Цитата (SlavaFr @ 20.04.2016 - 16:43)
написать маленькую статью по этому поводу

пересказывание мануала не нужно
особенно бесила в свое время, когда искал информацию, 100500-я унылая копипаста про тестирование калькулятора
давай примеры из реальной практики, с удовольствием почитаю


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса