Всем привет, продолжаю изучение PHPUnit и тестирование в целом. Хочу узнать покрытие тестами.
Мой код
<?php
namespace app;
class User2
{
private $password;
public function getPassword()
{
if (isset($this->password)) {
return $this->password;
} else {
return null;
}
}
public function setPassword($login)
{
if (is_string($login)) {
$this->password = $this->cryptPassword($login);
return true;
}
return false;
}
protected function cryptPassword($login)
{
return md5(uniqid($login));
}
}
Код теста
<?php
namespace tests;
use PHPUnit\Framework\TestCase;
use app\User2;
class User2Test extends TestCase
{
public function invokeMethod(&$object, $methodName, array $parameters = [])
{
$reflection = new \ReflectionClass(get_class($object));
$method = $reflection->getMethod($methodName);
$method->setAccessible(true);
return $method->invokeArgs($object, $parameters);
}
public function testGetPassword()
{
$obj = new User2();
$login = 'login';
$obj->setPassword($login);
$this->assertEquals(32, strlen($obj->getPassword()));
}
public function testCryptPassword()
{
$obj = new User2();
$login = 'login';
$password = $this->invokeMethod($obj, 'cryptPassword', [$login]);
$this->assertEquals(32, strlen($password));
}
}
phpunit.xml
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/6.5/phpunit.xsd"
bootstrap="vendor/autoload.php"
forceCoversAnnotation="true"
beStrictAboutCoversAnnotation="true"
beStrictAboutOutputDuringTests="true"
beStrictAboutTodoAnnotatedTests="true"
verbose="true"
colors="true">
<testsuite name="default">
<directory suffix="Test.php">tests</directory>
</testsuite>
<filter>
<whitelist processUncoveredFilesFromWhitelist="true">
<directory suffix=".php">app</directory>
</whitelist>
</filter>
</phpunit>
выполняю данную команду "phpunit --coverage-html tests\coverage" открываю User2.php.html и вижу
А в консоли вот что
Объясните, пожалуйста, что делаю не так. Заранее спасибо!