дилемма утверждения в классе модульного тестирования

Я хотел бы использовать функцию PHP assert в моей среде модульного тестирования. Его преимущество состоит в том, что он может видеть вычисляемое выражение (включая комментарии) в сообщении об ошибке.

Проблема в том, что каждый метод, содержащий тесты, может иметь более одного утверждения утверждения, и я хотел бы отслеживать, как было выполнено много реальных утверждений. assert не дает мне возможности подсчитать, сколько раз он был запущен, только сколько раз он терпел неудачу (в обратном вызове отказа).

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

private function assertTrue($expression) {
    $this->testCount++;
    assert($expression);
}

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

$var = true;
$this->assertTrue('$var == true'); // fails

Любые советы по поводу того, как я могу Могу ли я использовать assert в моем модульном тестировании, имея при этом возможность подсчитывать количество реальных тестов?

Две идеи, которые я придумал, - это заставить пользователей считать себя

$this->testCount++;
assert('$foo');
$this->testCount++;
assert('$bar');

или заставить пользователей помещать только одно утверждение в каждый метод тестирования ( Затем я мог подсчитать количество запущенных методов). но ни одно из этих решений не является принудительным и затрудняет кодирование. Любые идеи о том, как это сделать? Или мне просто убрать assert () из своей среды тестирования?

11
задан Jonathan Leffler 29 May 2011 в 01:41
поделиться