PHPUnit: получить имя тестового класса и метода из setUp()?

PHPUnit запускает метод setUp() тестового класса до запуска конкретного теста.

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

Если метод setUp() предоставляет имя тестового класса и имя метода тестирования, это можно сделать.

Является ли имя тестового класса и метода, который должен быть запущен для меня в методе setUp()?

Ответ 1

Самый простой способ добиться этого - вызвать $this->getName() в setUp().

<?php

class MyTest extends PHPUnit_Framework_TestCase
{
    public function setUp() {
        var_dump($this->getName());
    }


    public function testMethod()
    {
        $this->assertEquals(4,2+2,'OK1');
    }
}

И работает:

phpunit MyTest.php 

дает:

PHPUnit 3.7.1 by Sebastian Bergmann.

.string(10) "testMethod"


Time: 0 seconds, Memory: 5.00Mb

OK (1 test, 1 assertion)

В общем, я бы советовал делать это, но там были случаи, когда это может быть хорошим способом сделать что-то.

Другие варианты состоят в том, чтобы иметь более одного тестового класса и иметь все тесты, которые используют одни и те же приборы в одном классе.

Другим было бы иметь частные помощники setUp и вызывать соответствующий из тестового примера.

Ответ 2

В качестве альтернативы, если вы не хотите показывать часть string(10), как в ответе edorian, вы можете сделать это следующим образом:

protected function setUp()
{
    echo $this->getName() . "\n";
}