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

0

Я следую примерам в руководстве 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
    Я думаю, что ваш тест в порядке! Вы пытались запустить в командной строке? Что за ошибка в журнале?
  • 0
    Хммм, я сейчас пытаюсь воспроизвести мою собственную проблему, и она, кажется, работает как надо. : -S Понятия не имею, что сейчас отличается, хотя.
Показать ещё 6 комментариев
Теги:
eclipse-pdt
phpunit

2 ответа

0

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

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

Изображение 174551

Ещё вопросы

Сообщество Overcoder
Наверх
Меню