PHPUnit не запускает свои тесты

Я следую за примерами из руководства по PHPUnit. Смотрите два файла теста ниже. Я запускаю тесты в Eclipse PDT с установленным PTI. Я вижу следующие проблемы:

  • При запуске DependencyFailureTest он не распознает его как тест. Это ничего не работает.
  • При запуске MultipleDependenciesTest он запускается и упоминает, что все три тестовых случая прошли, как и должно быть. Однако, если я затем изменю ожидаемый результат в функции testConsumer на массив («первый», «третий»), он все равно будет упоминать о том, что все тесты пройдены, хотя один из них должен явно потерпеть неудачу. Кроме того, когда я меняю одно из утверждений на $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()
);
}
}
?>

0

Решение

У меня пока нет хорошего ответа, только немного черной магии вуду. Я заметил, что для запуска в командной строке мне нужно включить тестируемый класс.

<?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. Я отключил это, и это сработало. Я включил его снова, и он все еще работал.

Настройки Eclipse PHPUnit

0

Другие решения

Phpunit ничего не показывает (запуск 0/0)

Ошибка консоли:
Неустранимая ошибка: объявление 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

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector