Я создаю набор классов для тестирования некоторых данных - У меня есть базовый класс Test
:Призывая дочерний метод в PHP ООП
class Test {
protected $data;
public function __construct($data) {
$this->data = $data;
}
public function Run() {}
}
, а затем ряд классов, которые проходят испытания, такие как TestForX
:
class TestForX extends Test {
public function Run() {
// do test code
}
}
Я хочу добавить некоторые моменты в мой метод Run. Я знаю, что могу добавить методы для startTiming
и endTiming
в мой базовый класс и позвонить parent::startTiming()
и parent::endTiming()
в своих расширенных классах, но я уже написал массу тестов.
Можно ли включить этот раунд и использовать что-то вроде child::Run
в моем базовом классе?
class Test {
public function Run() {
$this->startTime = microtime(true);
child::Run();
$this->endTime = microtime(true);
}
}
Это позволило бы мне сохранить классы моего ребенка чистыми, обернув методы в основании. На данный момент я обойду его, имея базовый класс для Test::Go
, который вызывает $this->Run()
.
Это не похоже на phpunit. Имеет ли ваша среда тестирования концепция метода метода startUp() и tearDown()? Если это так, я бы поместил его в базовый класс, хотя вы бы несли временные издержки из самой тестовой среды. –
Спасибо, но это за тестирование структуры документа - например, DOM - не модульное тестирование. –
FWIW, ваш класс 'Test' не должен иметь метод под названием' Test'; это старый, но все еще поддерживаемый способ объявить конструктор и однажды укусит вас в заднем конце. – deceze