PHPUnit проходит тест без утверждений в конфигурации - PullRequest
5 голосов
/ 12 июля 2011

Я тоже хочу пройти тесты, которые получают следующее: «Этот тест не выполнил никаких утверждений»

Я знаю, что могу добавить что-то вроде assertTrue (true), но возможно ли добавить что-то в конфигурацию, чтобы эти тесты прошли?

Я почти уверен, что это происходит только с версии PHPUnit 3.5.0 с введением --strict

Ответы [ 5 ]

8 голосов
/ 20 июня 2018

Используйте аннотацию @doesNotPerformAssertions :

/**
 * @doesNotPerformAssertions
 */
public function testCodeWithoutUsingAssertions()
{
    // do stuff...
}
6 голосов
/ 06 сентября 2017

Используйте $this->addToAssertionCount(1). Смотри ниже.

class NoAssertTest extends PHPUnit_Framework_TestCase
{
    function testWithoutAssertions() {
        $x = 5;

        // Increment the assertion count to signal this test passed.
        // This is important if you use a @depends on this test
        $this->addToAssertionCount(1);
    }
}
2 голосов
/ 13 августа 2018

С PHPUnit 7.2 вы получаете другую альтернативу:

public function testCodeWithoutUsingAssertions()
{
    $this->expectNotToPerformAssertions();
    // do stuff...
}

См. Также https://github.com/sebastianbergmann/phpunit/pull/3042.

2 голосов
/ 06 января 2015

Если у вас PHP SimpleTest, можно использовать другой подход:

$this->pass();

Это пометит тест как завершенный и пройденный.

С другой стороны, для теста, которыйесли вы хотите потерпеть неудачу, вы можете использовать:

$this->fail();

Например:

if (someComplicatedLogicValidation) {
    // Do more stuff and asserts
} else{
    $this->fail();
}

Я пробовал это в PHP 5.5 и работает:

function testThatWorks() {
    $this->pass();
}

function testThatFails() {
    $this->fail();
}

Вывод:

1) Ошибка в [... ExampleTest.unit.php строка 23] в testThatFails в ExampleTest в ... / ExampleTest.unit.php ошибка в 3.02s

Возможно, метод pass все еще может быть легко реализован в PHPUnit.Источник от SimpleTest:

function pass($message = "Pass") {
    if (! isset($this->reporter)) {
        trigger_error('Can only make assertions within test methods');
    }
    $this->reporter->paintPass(
    $message . $this->getAssertionLine());
    return true;
}
0 голосов
/ 12 июля 2011

Если вы передаете --strict в PHPUnit, не делайте этого. Смысл этой опции заключается в том, чтобы «пометить тест как неполный, если не сделано никаких утверждений».

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