标签: phpunit

使用PHPUnit设置测试超时持续时间

我有一些测试用例可以在失败时进入无限循环.是否有内置的方法来设置PHPUnit的测试超时持续时间?

如果没有,那么将这个功能添加到测试用例中最不显眼的方法是什么?

php phpunit unit-testing

7
推荐指数
2
解决办法
4003
查看次数

phpunit - 错误的路径

有人知道我做错了什么吗?我已经安装了phpunit,当我在/ opt/local/PEAR目录下时一切都很好,所以如果我去/ opt/local/PEAR目录并运行phpunit,我会得到:

Sebastian Bergmann的PHPUnit 3.5.11.
用法:phpunit [开关] UnitTest [UnitTest.php]
phpunit [开关]
blablabla

但如果我在另一条路上,我会得到:

警告:require_once(PHP/CodeCoverage/Filter.php):无法打开流:第38行的/ usr/local/bin/phpunit中没有此类文件或目录

致命错误:require_once():在第38行的/ usr/local/bin/phpunit中打开所需的'PHP/CodeCoverage/Filter.php'(include_path ='.:/ usr/lib/php')失败

我知道我的PATH有问题.我该如何解决?

php terminal phpunit zend-framework path

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

如何在PHPUnit测试中显示基础测试方法?

我有测试套件,里面有很多测试.这是一个中等大小的:

ok  4 - CommodityBasketTest::testStartsOutEmpty
ok  5 - CommodityBasketTest::testCanAddACommodity
ok  6 - CommodityBasketTest::testWillAddOneCommodityByDefault
ok  7 - CommodityBasketTest::testCannotAddACommodityWithAnNonNumericQuantity
ok  8 - CommodityBasketTest::testAddingTheSameCommodityWillIncreaseItsQuantity
ok  9 - CommodityBasketTest::testMultipleCommodityCanBeAdded
ok 10 - CommodityBasketTest::testTakingFromAnEmptyBasketWontWork
ok 11 - CommodityBasketTest::testTakesFirstCommodityFromTheBasket
ok 12 - CommodityBasketTest::testCanRetrieveASpecificCommodity
ok 13 - CommodityBasketTest::testWillThrowExceptionOnMissingCommodity
ok 14 - CommodityBasketTest::testReturnsZeroWorthForEmptyBaskets
ok 15 - CommodityBasketTest::testReturnsProperWorthOfACommodity
ok 16 - CommodityBasketTest::testWillAccuratelyReturnStatistics
Run Code Online (Sandbox Code Playgroud)

我如何装备PHPUnit以便我可以以某种方式显示正在测试的基础方法,就像我在粘贴中一样?我对输出很灵活; 例如,我只想知道CommodityBasketTest::testReturnsZeroWorthForEmptyBaskets测试CommodityBasket::getValuation().

这就是我想要的:

-- CommodityBasket::__construct() --
ok  4 - CommodityBasketTest::testStartsOutEmpty

-- CommodityBasket::add() --
ok  5 - CommodityBasketTest::testCanAddACommodity
ok  6 - CommodityBasketTest::testWillAddOneCommodityByDefault
ok  7 …
Run Code Online (Sandbox Code Playgroud)

php phpunit

7
推荐指数
1
解决办法
2346
查看次数

Symfony 2 w/PhpUnit 3.6:更改目标主机名以进行测试

我正在以这种方式测试控制器:

$crawler = $client->request('GET', 'lang/120');
Run Code Online (Sandbox Code Playgroud)

在print_r'ing $ crawler对象后,我可以看到目标URL是http:// localhost/lang/120.但是,我的目标主机是在我的机器上设置的虚拟主机,让我们说http://www.somehost.tld,我想使用它.我应该使用什么干净的手段进行单元测试来定位虚拟主机?

我已经尝试在我的phpunit.xml.dist文件中放入一个php变量并使用它:

<php>
    <server name="HOSTNAME" value="http://www.somehost.tld/app.php/" />
</php>
Run Code Online (Sandbox Code Playgroud)

然后 :

$crawler = $client->request('GET', $_SERVER['HOSTNAME'] . 'lang/120');
Run Code Online (Sandbox Code Playgroud)

但这看起来很尴尬......是否有任何配置文件(config_test文件?)我应该放置该虚拟主机名?

感谢大家的帮助!

phpunit symfony

7
推荐指数
2
解决办法
4911
查看次数

PHPUnit ReflectionException方法套件不存在

我正在使用PHPUnit版本3.6.2,并且总是得到

PHP ReflectionException:第113行的/pathTo/pear/PHPUnit/Runner/BaseTestRunner.php中不存在方法套件

运行单一测试时:

phpunit path/to/my/ClassToTest.php
Run Code Online (Sandbox Code Playgroud)

使用pear安装PHPUnit,我使用的是php 5.3.6

我应该修复任何PHP配置吗?或者这只是PHPUnit应该修复的东西.

班级

<?php

class ClassToTest extends PHPUnit_Framework_TestCase{

    public function testSomething(){
        $this->assertTrue(true);
    }

}
Run Code Online (Sandbox Code Playgroud)

php testing phpunit

7
推荐指数
2
解决办法
2586
查看次数

PHPUnit和WebDriver - 如何获取当前URL?

场景:我打开www.google.com,输入一些关键字并点击搜索按钮.现在我进入结果页面.我想获取此结果页面的当前URL,包括查询参数.

我发现了一个方法,getBrowserUrl()这里在GitHub上PHPUnit的硒.410行

但是这个方法返回了我在setUp函数中设置的值.

public function setUp(){
$this->setBrowser(testConfig::$browserName);
$this->setBrowserUrl('http://www.google.com/');
}

public function testGoogleSearch(){
$this->url('');
//input some keywords
.......
//click search button
.......
//want to get the url of result page
$resultUrl= $this->getBrowserUrl();
echo $resultUrl;
}
Run Code Online (Sandbox Code Playgroud)

我收到了一个字符串' http://www.google.com/ '而不是结果页的整个网址.请帮帮我,谢谢!

selenium phpunit

7
推荐指数
1
解决办法
4905
查看次数

断言PHPUnit对象具有整数属性

我正在使用PHPUnit,我必须检查json_decode结果.我有一个包含整数属性的对象,您可以在调试器视图中看到:

我的对象的调试器视图

当我这样做:

$this->assertObjectHasAttribute('1507',$object);
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

PHPUnit_Framework_Assert::assertObjectHasAttribute() must be a valid attribute name
Run Code Online (Sandbox Code Playgroud)

$object是一个例子stdClass

php phpunit

7
推荐指数
1
解决办法
6533
查看次数

Laravel忽略了测试数据库连接

使用一个内存中的SQLite数据库迁移/因为它说回滚每一个测试我使用Laravel 5.3.22,想单元测试我的应用程序在这里.这是我的database.php配置的连接部分:

'mysql' => [
            'driver'    => 'mysql',
            'host'      => env('DB_HOST', 'localhost'),
            'database'  => env('DB_DATABASE', 'forge'),
            'username'  => env('DB_USERNAME', 'forge'),
            'password'  => env('DB_PASSWORD', ''),
            ...
        ],

        'testing' => [
            'driver'   => 'sqlite',
            'database' => ':memory:',
            'prefix'   => '',
        ],
Run Code Online (Sandbox Code Playgroud)

这是phpunit env配置:

<php>
    <env name="APP_ENV" value="testing"/>
    <env name="CACHE_DRIVER" value="array"/>
    <env name="SESSION_DRIVER" value="array"/>
    <env name="QUEUE_DRIVER" value="sync"/>
    <env name="DB_CONNECTION" value="testing"/>
</php>
Run Code Online (Sandbox Code Playgroud)

phpunit配置暗示laravel shoud使用"testing"sqlite连接进行测试,但它并不关心并继续使用主mysql连接.这不是一个选项,我有一个庞大而复杂的架构,它不能用于使用mysql进行单元测试.我该怎么办?我无法模拟查询构建器,因为我需要断言它的结果.

php testing phpunit unit-testing laravel

7
推荐指数
1
解决办法
1087
查看次数

使用自定义验证器进行symfony2单元测试验证

我正在尝试为一个模型编写测试,该模型包含一些普通验证器和一个使用实体管理器和请求的自定义验证器.如果由于某种原因这很重要,我正在使用phpunit进行测试.

我通过对实体管理器和请求进行存根,然后验证某些对象来测试另一个测试中的自定义验证器.由于这证明自定义验证有效,我只需要测试正常验证,如果可以,只需将自定义验证器保留.

这是我的模型:

/**
 * @MyAssert\Client()
 */
abstract class BaseRequestModel {

    /**
     * @Assert\NotBlank(message="2101")
     */
    protected $clientId;

    /**
     * @Assert\NotBlank(message="2101")
     */
    protected $apiKey;

    // ...

}
Run Code Online (Sandbox Code Playgroud)

在我的测试中,我得到验证器,创建一个对象,然后验证它.

$validator = ValidatorFactory::buildDefault()->getValidator();
$requestModel = new RequestModel();
$errors = $validator->validate($requestModel);
Run Code Online (Sandbox Code Playgroud)

当然这会失败,因为它找不到为MyAssert\Client定义的Validator,它是一个服务,需要通过某个依赖注入容器来解析.

任何人都知道如何存根自定义验证器或将其从验证中排除

phpunit unit-testing dependency-injection symfony

6
推荐指数
1
解决办法
3242
查看次数

测试新模型时未找到雄辩的类

我正在尝试测试我雄辩的模型,但我的测试仍然失败了"Class'Eloquent'not found'错误.如果我添加一个使用我的雄辩模型的路线并简单地打印存储在数据库中的一些信息,一切正常.只有在尝试运行phpunit时,才会发现eloquent没有被发现的问题.我的模型在应用程序/模型中,所以它应该包含在作曲家类图中,我已经完成了composer dump-autoload.我敢肯定我忽略了一些非常明显但我无法理解的东西.知道问题是什么吗?

我的测试:

class GameTest extends TestCase {

    public function setUp(){
        $this->game = Game::find(1);
    }

    public function testGameInstance(){
        $this->assertInstanceOf('Game', $this->game);
    }
}
Run Code Online (Sandbox Code Playgroud)

我的模特:

class Game extends Eloquent{

    protected $table = 'gm_game';
    protected $primaryKey = 'game_id';
}
Run Code Online (Sandbox Code Playgroud)

phpunit laravel eloquent laravel-4

6
推荐指数
1
解决办法
3624
查看次数