标签: phpunit

PHPUnit:致命的错误处理

我使用PHPUnit进行单元测试,但是当触发致命错误时,脚本会死,而且我没有正确的PHPUnit输出.

我希望PHPUnit输出保持正确格式化,因为它是由Eclipse的插件读取的.实际上,致命错误会停止PHPUnit,而在Eclipse中,插件无法解释任何内容(因为PHPUnit脚本错误,而不是处理它).

谢谢

php error-handling phpunit fatal-error

21
推荐指数
1
解决办法
8305
查看次数

让PHPUnit工作 - 包含路径设置不正确?

我正在尝试让PHPUnit在我的开发环境中运行,但是当我在脚本中包含PHPUnit时,我遇到了一些障碍.我知道我需要在PHP上设置include路径,但是我试过的每个组合都会失败,而编译器看不到PHPUnit_Framework_TestCase类.

我刚刚在PHP和PEAR上运行了更新,并且计算机上安装了PHPUnit,因为我可以通过命令行访问它.

PHPUnit安装在/ usr/share/php/PHPunit

梨在/ usr/share/php/PEAR

有什么我想念的吗?这是我第一次尝试使用PHPUnit甚至是PEAR的东西.我在Ubuntu 10.10上.任何帮助,将不胜感激.

编辑 - 我的PHP ini中的include路径中没有任何内容.现在代码就是这样

<?php
class Stacktest extends PHPUnit_Framework_TestCase
{

}
Run Code Online (Sandbox Code Playgroud)

我不知道要在include路径中包含什么或设置什么,因为对于关于PHPUnit的网络上的所有信息来说,这些一点点的信息都是严重缺失的.

php pear phpunit unit-testing

21
推荐指数
3
解决办法
6万
查看次数

PHPUnit和数据提供者的问题

我有以下测试用例:

include_once('../Logger.php');

class LoggerTest extends PHPUnit_Framework_TestCase {

    public function providerLogger() {
        return new Logger;
    }

    /**
     * @dataProvider providerLogger
     */
    public function testAddStream($logger) {
        $this->assertTrue(false);
    }

}
Run Code Online (Sandbox Code Playgroud)

当我在PHPUnit中运行它时,我得到:

PHPUnit 3.4.14 by Sebastian Bergmann.

..........

Time: 0 seconds, Memory: 5.75Mb

OK (1 tests, 0 assertions)
Run Code Online (Sandbox Code Playgroud)

测试应该失败,但事实并非如此.我试过:

public function providerLogger() {
    return array(new Logger);
}
Run Code Online (Sandbox Code Playgroud)

但我得到:

The data provider specified for LoggerTest::testAddStream is invalid.
Run Code Online (Sandbox Code Playgroud)

我试着宣布它static(就像手册所说的那样),但仍然没有区别.

我记得以前以类似的方式工作,但我可能是错的.我错过了什么?

在此先感谢您的帮助.

PHP 5.3.3上的PHPUnit 3.4.14(取自PEAR)

php phpunit unit-testing dataprovider

21
推荐指数
2
解决办法
2万
查看次数

使用模拟服务进行Symfony 2功能测试

我有一个控制器,我想为其创建功能测试.该控制器通过MyApiClient类向外部API发出HTTP请求.我需要模拟这个MyApiClient类,所以我可以测试我的控制器如何响应给定的响应(例如,如果MyApiClient类返回500响应它将做什么).

MyApiClient通过标准的PHPUnit mockbuilder 创建类的模拟版本没有问题:我遇到的问题是让我的控制器将此对象用于多个请求.

我目前正在测试中执行以下操作:

class ApplicationControllerTest extends WebTestCase
{

    public function testSomething()
    {
        $client = static::createClient();

        $apiClient = $this->getMockMyApiClient();

        $client->getContainer()->set('myapiclient', $apiClient);

        $client->request('GET', '/my/url/here');

        // Some assertions: Mocked API client returns 500 as expected.

        $client->request('GET', '/my/url/here');

        // Some assertions: Mocked API client is not used: Actual MyApiClient instance is being used instead.
    }

    protected function getMockMyApiClient()
    {
        $client = $this->getMockBuilder('Namespace\Of\MyApiClient')
            ->setMethods(array('doSomething'))
            ->getMock();

        $client->expects($this->any())
            ->method('doSomething')
            ->will($this->returnValue(500));

        return $apiClient;
    }
}
Run Code Online (Sandbox Code Playgroud)

似乎在第二个请求发生时正在重建容器,导致MyApiClient再次实例化.所述MyApiClient …

phpunit dependency-injection symfony

21
推荐指数
2
解决办法
1万
查看次数

如何在不修改其内容的情况下忽略phpunit中的测试方法?

为了忽略使用PHPUnit的测试,应该在PHP测试方法旁边放置什么属性?

我知道对于NUnit,属性是:

[Test]
[Ignore]
public void IgnoredTest()
Run Code Online (Sandbox Code Playgroud)

php phpunit nunit unit-testing symfony

21
推荐指数
5
解决办法
2万
查看次数

CLI上的PHPunit结果输出未显示测试名称

我在PHPUnit中运行一个全新的测试套件,我希望看到每个测试的结果,旁边有测试名称.这将使修复损坏的测试和TDD更容易.

PHPunit确实输出了破碎的消息,但经过一段时间后,你的眼睛经历了所有的错误和堆栈跟踪.

.......F...................一旦您的测试套件启动并且稳定,当前类型输出就很棒,但是当您创建套件时...

我已经尝试了这个--verbose参数,但没有用.

phpunit command-line-interface

21
推荐指数
2
解决办法
7697
查看次数

Phpunit覆盖:'addUncoveredFilesFromWhitelist'和'processUncoveredFilesFromWhitelist'选项之间有什么区别?

我正在尝试为特定目录设置phpunit的代码覆盖率.有人能告诉我有什么区别:

<filter>
    <whitelist>
        <directory suffix=".php">lib/</directory>
    </whitelist>
</filter>
Run Code Online (Sandbox Code Playgroud)

<filter>
    <whitelist addUncoveredFilesFromWhitelist="true">
        <directory suffix=".php">lib/</directory>
    </whitelist>
</filter>
Run Code Online (Sandbox Code Playgroud)

<filter>
    <whitelist processUncoveredFilesFromWhitelist="true">
        <directory suffix=".php">lib/</directory>
    </whitelist>
</filter>
Run Code Online (Sandbox Code Playgroud)

目前前两个选项将起作用(具有不同的覆盖数)但第三个选项将失败,其错误类似于如何将未覆盖的文件添加到Yii应用程序的PHPUnit代码覆盖率报告中.

刚刚开始使用phpunit,并希望了解这些白名单选项之间的差异.我阅读了关于此的官方文档,但我不确定我理解.

php phpunit

21
推荐指数
2
解决办法
6879
查看次数

PHPunit Uncaught Error:调用未定义的方法PHPUnit_Util_Configuration :: getTestdoxGroupConfiguration()

我不知道它是否与Laravel 5.4有关.当我phpunit在安装laravel 5.4之后运行命令而没有做任何改变我得到Uncaught Error: Call to undefined method PHPUnit_Util_Configuration::getTestdoxGroupConfiguration()但是当我运行php artisan dusk它正常运行

c:\xampp\htdocs\ublocker>phpunit
PHP Fatal error:  Uncaught Error: Call to undefined method
PHPUnit_Util_Configuration::getTestdoxGroupConfiguration() in C:\xampp\htdocs\ublocker\vendor\phpunit\phpunit\src\TextUI\TestRunner.php:1046
Stack trace:
#0 C:\xampp\htdocs\ublocker\vendor\phpunit\phpunit\src\TextUI\TestRunner.php(167): PHPUnit_TextUI_TestRunner->handleConfiguration(Array)
#1 C:\xampp\php\pear\PHPUnit\TextUI\Command.php(176): PHPUnit_TextUI_TestRunner->doRun(Object(PHPUnit_Framework_TestSuite), Array)
#2 C:\xampp\php\pear\PHPUnit\TextUI\Command.php(129): PHPUnit_TextUI_Command->run(Array, true)
#3 C:\xampp\php\phpunit(46): PHPUnit_TextUI_Command::main()
#4 {main}
thrown in C:\xampp\htdocs\ublocker\vendor\phpunit\phpunit\src\TextUI\TestRunner.php on line 1046

Fatal error: Uncaught Error: Call to undefined method PHPUnit_Util_Configuration::getTestdoxGroupConfiguration() in C:\xampp\htdocs\ublocker\vendor\phpunit\phpunit\src\TextUI\TestRunner.php:1046
Stack trace:
 C:\xampp\htdocs\ublocker\vendor\phpunit\phpunit\src\TextUI\TestRunner.php(167): PHPUnit_TextUI_TestRunner->handleConfiguration(Array)
C:\xampp\php\pear\PHPUnit\TextUI\Command.php(176): PHPUnit_TextUI_TestRunner->doRun(Object(PHPUnit_Framework_TestSuite), Array)
C:\xampp\php\pear\PHPUnit\TextUI\Command.php(129): PHPUnit_TextUI_Command->run(Array, true)
C:\xampp\php\phpunit(46): PHPUnit_TextUI_Command::main()
{main}
thrown in …
Run Code Online (Sandbox Code Playgroud)

phpunit laravel laravel-5.4

21
推荐指数
3
解决办法
2万
查看次数

模拟所有DateTime实例用于测试目的的时间

我希望能够在DateTimePHPUnit或Behat Test的持续时间内为每个实例化实例设置时间.

我正在测试与时间相关的业务逻辑.例如,类中的方法仅返回过去或将来的事件.

如果可能的话,我不想这样做:

  1. 写一个包装器DateTime并使用它代替DateTime整个代码.这将涉及重写我当前的代码库.

  2. 每次运行测试/套件时动态生成数据集.

所以问题是:是否有可能覆盖DateTimes行为以始终在请求时提供特定时间?

php testing datetime phpunit behat

20
推荐指数
2
解决办法
1万
查看次数

Phpunit,如何测试方法是否"无"?

class Testme()
{
    public function testMe ($a)
    {
        if ($a == 1)
        {
            throw new Exception ('YAY');
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

所以它很容易测试,如果它抛出异常

/**
 * @expectedException Exception
 */
public function test()
{
    new Testme(1);
}
Run Code Online (Sandbox Code Playgroud)

但如果什么都没做呢?

public function test()
{
    new Testme(2);
 ?? ? ? ? ?
}
Run Code Online (Sandbox Code Playgroud)

php phpunit

20
推荐指数
4
解决办法
5385
查看次数