标签: phpunit

PHP:我如何调整PHPUnit以使用不同的PHP解释器?

我的系统有两个PHP解释器.一个是捆绑了操作系统,另一个是通过XAMPP包安装的.我的所有PHP扩展都应用于XAMPP安装,但PHPUnit似乎只运行我的机器附带的PHP版本.

有没有人知道我可以配置或重建PHPUnit的方式,以便它只使用我的XAMPP PHP解释器?

php xampp configuration phpunit

11
推荐指数
2
解决办法
4646
查看次数

PHPUnit - 在命令行中从代码覆盖中排除某些目录

我正在开发基于Yii框架的项目,我们有许多测试,我们以编程方式添加到测试套件中,所以我们没有使用phpunit.xml文件来配置测试.

问题是,如何从代码覆盖率报告中排除某些目录(例如Yii文件夹).我发现的大多数解决方案都基于xml文件中的黑名单/白名单配置选项.

我还发现phpunit命令有--filter选项,但我找不到任何示例如何使用它来排除完整目录(或少数几个).

phpunit unit-testing code-coverage xdebug

11
推荐指数
1
解决办法
9964
查看次数

无法发送会话cookie - 标头已经发送过PHPUnit/Laravel

我有一个奇怪的问题当我parent::setUp()在我的TestCase类上调用单元测试一个类时,我运行phpunit时它会抛出这个错误:

1)MatchRequestRepositoryTest :: test_find_requests_by_match_id ErrorException:session_start():无法发送会话cookie - 已经发送的头文件(输出从/var/www/project.dev/vendor/phpunit/phpunit/PHPUnit/TextUI/TestRunner.php:459开始)

可能是什么问题?谢谢你的帮助.

php phpunit unit-testing laravel-4

11
推荐指数
2
解决办法
9268
查看次数

Symfony 3作曲家,ext-dom和ext-xml缺失

我正在运行Linux Mint 18.1.我的IDE是PhpStorm,我试图通过作曲家安装PHPUnit.我按照https://getcomposer.org/download/上的安装步骤进行操作.

问题1 - phpunit/phpunit 6.4.x-dev的安装请求 - > phpunit/phpunit [6.4.x-dev]可满足. - phpunit/phpunit 6.4.x-dev需要ext-dom* - >系统中缺少所请求的PHP扩展dom.
问题2 - symfony/symfony v3.3.6需要ext-xml* - >系统中缺少所请求的PHP扩展xml. - symfony/symfony v3.3.6需要ext-xml* - >系统中缺少所请求的PHP扩展xml. - symfony/symfony v3.3.6需要ext-xml* - >系统中缺少所请求的PHP扩展xml. - symfony/symfony的安装请求(锁定在v3.3.6,需要为3.3.*) - > symfony/symfony [v3.3.6]可满足.

我试过的解决方案:

  • 安装php-xml
  • 安装php7.0-xml
  • 这个答案说要检查你的任何php.ini文件中是否启用了"extension = dom.so".它甚至不存在于我的文件中

有什么建议?非常感谢!

phpunit symfony composer-php

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

PHPUnit数据库扩展 - 如何拥有一个空数据集?

我想创建一个空的测试表.使用来自digitalsandwich的示例,我想要类似于:

require_once 'PHPUnit/Extensions/Database/TestCase.php';
class BankAccountDBTest extends PHPUnit_Extensions_Database_TestCase
{
    protected $pdo;

    public function __construct()
    {
        $this->pdo = new PDO('sqlite::memory:');
        BankAccount::createTable($this->pdo);
    }

    protected function getConnection()
    {
        return $this->createDefaultDBConnection($this->pdo, 'sqlite');
    }

    protected function getDataSet()
    {
        return $this->createFlatXMLDataSet(dirname(__FILE__).'/_files/empty-seed.xml');
    }

    public function testEmptyTableBehavior() 
    {
        // test stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

我应该使用与createFlatXMLDataSet()不同的方法吗?要么???

phpunit dbunit

10
推荐指数
1
解决办法
3360
查看次数

有没有办法告诉我的PHPUnit测试用例是否有来自tearDown()的失败?

对于我来说,检查PHPUnit我的测试执行是成功还是失败的最佳方法是什么?我试图为我的Selenium窗口截取屏幕截图,但仅在我的测试失败时.我尝试在onNotSuccessfulTest中截取屏幕截图,但是如果我总是在tearDown()中关闭我的窗口(我应该这样做),那么就没有会话可以在我的onNotSuccessfulTest函数中截取屏幕截图.

我正在考虑的解决方案涉及在tearDown中检查测试是成功还是失败,确定是否截取屏幕截图.

我使用PHPUnit 3.6和Facebook的php-webdriver,据我所知,我没有变量captureScreenshotOnFailure.

思考?

phpunit

10
推荐指数
1
解决办法
940
查看次数

如何通过phpunit上的所有测试保留会话?

我正在使用phpunit测试Zend Framework上的购物车,结帐,付款流程.我正在ShoppingCartController通过向购物车添加产品进行测试,ShoppingCart模型通过将产品ID存储在Zend会话命名空间中来处理产品添加,然后在另一个测试中我想测试产品是否已添加.同一个ShoppingCartModel从同一个Zend Session命名空间变量中检索添加的产品列表.

添加产品测试看起来像这样并且运行良好,并且var_dump($_SESSION)已添加到调试并正确显示产品:

public function testCanAddProductsToShoppingCart() {

    $testProducts = array(
        array(
            "product_id" => "1",
            "product_quantity" => "5"
        ),
        array(
            "product_id" => "1",
            "product_quantity" => "3"
        ),
        array(
            "product_id" => "2",
            "product_quantity" => "1"
        )
    );

    Ecommerce_Model_Shoppingcart::clean();

    foreach ($testProducts as $product) {
        $this->request->setMethod('POST')
                ->setPost(array(
                    'product_id' => $product["product_id"],
                    'quantity' => $product["product_quantity"]
                ));

        $this->dispatch($this->getRouteUrl("add_to_shopping_cart"));
        $this->assertResponseCode('200');
    }

    $products = Ecommerce_Model_Shoppingcart::getData();
    $this->assertTrue($products[2][0]["product"] instanceof Ecommerce_Model_Product);
    $this->assertEquals($products[2][0]["quantity"],
            "8");

    $this->assertTrue($products[2][1]["product"] instanceof Ecommerce_Model_Product);
    $this->assertEquals($products[2][1]["quantity"],
            "1");

    var_dump($_SESSION);
}
Run Code Online (Sandbox Code Playgroud)

第二个测试尝试通过询问模型来检索产品var_dump($_SESSION),在测试开始时已经为null. …

session phpunit

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

10
推荐指数
1
解决办法
1698
查看次数

如何在phpunit测试中强制将环境变量设置为某个值?

在我的phpunit中我有这个配置:

<php>
    <env name="ENVIRONMENT" value="test"/>
</php>
Run Code Online (Sandbox Code Playgroud)

我在错误的假设下工作,它总是将环境变量设置为值test.然而,当系统已经具有变量集时,则它更喜欢已存在的值.

$ export ENVIRONMENT=GNARF
$ phpunit -c test/phpunit.xml
Run Code Online (Sandbox Code Playgroud)

所以在测试中,即使我预期,它的价值env('ENVIRONMENT')也会"GNARF"如此"test".

有没有办法让phpunit将env设置视为默认值而不是它应该使用的确定值?

我也想避免以某种方式调用phpunit来获得正确的env变量.

所以虽然这有效:

ENVIRONMENT="test";./vendor/bin/phpunit -c tests/phpunit.xml
Run Code Online (Sandbox Code Playgroud)

phpunit.xml如果可能的话,我宁愿在文件中配置它.

php phpunit environment-variables

10
推荐指数
1
解决办法
5842
查看次数

模拟抛出错误phpunit的方法

PHPUnit让我使用以下任一方法创建方法存根以抛出异常:

  • [->will($this->throwException(..)][1]
  • ->willThrowException(..

我需要测试方法存根抛出PHP错误的一些情况.

PHPUnit是否支持这样的东西?这里有变通方法吗?

php phpunit unit-testing

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