Я следую примерам в руководстве PHPUnit. См. Два тестовых файла ниже. Я запускаю тесты в Eclipse PDT с установленным PTI. Я вижу следующие проблемы:
$this->assertTrue(FALSE);
, Я ожидаю неудачный и пропущенный тестовый пример, но снова все тестовые примеры проходят.Кто-нибудь испытал нечто подобное и решил это?
DependencyFailureTest
<?php
class DependencyFailureTest extends PHPUnit_Framework_TestCase
{
public function testOne()
{
$this->assertTrue(FALSE);
}
/**
* @depends testOne
*/
public function testTwo()
{
}
}
?>
MultipleDependenciesTest
<?php
class MultipleDependenciesTest extends PHPUnit_Framework_TestCase
{
public function testProducerFirst()
{
$this->assertTrue(true);
return 'first';
}
public function testProducerSecond()
{
$this->assertTrue(true);
return 'second';
}
/**
* @depends testProducerFirst
* @depends testProducerSecond
*/
public function testConsumer()
{
$this->assertEquals(
array('first', 'second'),
func_get_args()
);
}
}
?>
Phpunit ничего не показывает (запустите 0/0)
Ошибка консоли: Fatal error: декларация PHPUnitLogger :: addFailure (Test $ test, AssertionFailedError $ e, $ time): void должен быть совместим с PHPUnit\Framework\TestListener :: addFailure (PHPUnit\Framework\Test $ test, PHPUnit\Framework\AssertionFailedError $ e, float $ time): void в C:\Users\xxx\AppData\Local\Temp\phpunit_printer\PHPUnitLogger.php(415): код eval() 'в строке 1
TestCase
<?php
namespace PHPUnit\Framework;
use Facebook\WebDriver\WebDriverBy;
use Facebook\WebDriver\Remote\DesiredCapabilities;
use Facebook\WebDriver\Remote\RemoteWebDriver;
class SeleniumTest extends \PHPUnit_Framework_TestCase
{
protected $webDriver;
public function setUp()
{
// system . property_exists("Facebook\WebDriver\Firefox\FirefoxDriver", "C:\rc\geckodriver\geckodriver");
// System . set("Webdriver.gecko.driver", "C:\rc\geckodriver\geckodriver");
$this->webDriver = RemoteWebDriver::create('http://localhost:4444/wd/hub', DesiredCapabilities::firefox());
$this->webDriver->manage()
->window()
->maximize();
$this->webDriver->get('http://localhost/farmer/login');
// $this->webDriver->get("www.gmail.com");
}
public function testLoginPass()
{
$this->webDriver->get('http://localhost/farmer/login');
$this->webDriver->findElement(WebDriverBy::name('username'))->sendKeys(' correct');
$this->webDriver->findElement(WebDriverBy::id('password'))->sendKeys('password');
$this->webDriver->findElement(WebDriverBy::name('btn-login'))->click();
$content = $this->webDriver->findElement(WebDriverBy::tagName('body'))->getText();
$this->assertContains('Dashboard', $content);
}
public function testLoginFail()
{
$this->webDriver->get('http://localhost/farmer/login');
$this->webDriver->findElement(WebDriverBy::name('mobile'))->sendKeys("800000000000");
$this->webDriver->findElement(WebDriverBy::id('password'))->sendKeys("8000000000");
$this->webDriver->findElement(WebDriverBy::name('btn-login'))->click();
$content = $this->webDriver->findElement(WebDriverBy::className('help-block'))->getText();
$this->assertContains('Your Credential Doesnot Match.Please Try Again !!', $content);
}
public function tearDown()
{
$this->webDriver->quit();
}
}
?>
Хотя MakeGood работает правильно в Eclipse (все в порядке)
Результат MAKEGOOD
У меня пока нет хорошего ответа, только черная магическая вуду. Я заметил, что для запуска его в командной строке мне нужно включить тестируемый класс.
<?php
require_once ('path/to/Car.php')
class CarTest extends PHPUnit_Framework_TestCase {
...
Для запуска его в PTI я упоминаю файл в файле Bootstrap в настройках PHPUnit. Поэтому этот оператор reuire_once
не нужен. Но, тем не менее, этот require_once
заставляет тест не запускаться!
Что-то странное, что я заметил, это то, что когда-то мои тесты не выполнялись, даже без инструкции require_once
. В настройках PHPUnit у меня была опция "Не проверять равные пространства имен при поиске включенных классов php/test case". Я отключил его, и он сработал. Я снова включил его, и он все еще работал.