Вывод имени функции как она называется? - PullRequest
0 голосов
/ 01 апреля 2011

У меня 80 или около того тестов phpunit, возможно ли, что когда вызывается функция, я могу как-нибудь вывести имя функции для каждого теста?Я знаю, что могу сделать это вручную, но я надеялся, что при каждом вызове функции может быть вызван хук, который может помочь мне (или что-то подобное).

edit: каждый метод тестера

Ответы [ 3 ]

2 голосов
/ 01 апреля 2011
  • Если вы хотите отобразить имя каждой функции, вызванной вашим тестом , ответ будет Нет, нет.За исключением, конечно, добавления кода в эти функции, как описано в других ответах.

PHP не предоставляет способ вызова «ловушки» перед вызовом любой функции.

  • Если вы хотите отобразить имя каждой тестовой функции (в вашем тестовом классе), когда она вызывается, тогда это другое дело.

Сначала вы можете добавитьпараметры вашего вызова phpunit:

phpunit --verbose tests/
phpunit --testdox tests/

Или, если этого недостаточно, вы можете использовать функцию setUp () , которая выполняется перед каждым тестом, чтобыотобразить тест, запущенный в данный момент.

2 голосов
/ 01 апреля 2011

Введение

Для функций вы должны использовать __FUNCTION__ (связаны), а для методов классов вы можете использовать __METHOD__ (связаны).

Функция:

function my_function() {
    echo __FUNCTION__;
}

Вывод будет my_function;

Метод класса:

class Treffynnon {
    public function my_method() {
        echo __METHOD__;
    }
}

Вывод будет my_method;

Показать функцию как она была вызвана:

function my_function($param1, $param2, $param3) {
    $args = func_get_args();
    echo __FUNCTION__ . '(' . implode(', ', $args) . ')';
}
my_function('blah', 'blah', 'blah');

Вывод будет my_function(blah, blah, blah);. Очевидно, что это можно было бы значительно улучшить, чтобы более точно представлять, как передавались аргументы (т.е. заключать в кавычки выводимые параметры).

См. Справочную страницу func_get_args () для получения дополнительной информации.

1 голос
/ 01 апреля 2011

На самом деле имя метода вашего теста можно получить с помощью метода getName(). Он принимает необязательный аргумент для получения текущего ввода данных для метода теста.

Вы можете найти пример его использования в этом разделе документации PHPUnit: http://www.phpunit.de/manual/current/en/extending-phpunit.html#extending-phpunit.PHPUnit_Framework_TestListener

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...