标签: phpunit

我如何将phpunit与Hudson CI集成?

我们正在寻找从phpundercontrol切换到Hudson(它看起来有一些非常酷的功能!)但我无法弄清楚如何让phpunit日志显示出来.

我使用ant在handson中运行phpunit,并且--log-xml将phpunit.xml放在该构建的相应构建/文件夹中.但是我无法弄清楚如何让它出现在构建中,以便我们可以看到运行的测试和失败的测试,如果有的话.

在我弄明白之后,获得覆盖率,指标和api将是下一个:)

对于任何在HTML上生成它的东西来说,似乎应该是微不足道的,告诉Hudson例如"为这个项目显示每个构建的'API'链接和构建/ $ BUILDNUM/api/index.html的链接".

php phpunit hudson

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

PHPUnit,超全局变量.如何设置测试,以便正确设置$ _SERVER和$ _GET?

我正在编写一些PHP代码来解析传入的URL.它严重依赖于PHP全局变量,如$_SERVER$_GET.我想在PHPUnit单元测试setUp()功能中手动设置它们.有没有更好的方法呢?

php phpunit

15
推荐指数
1
解决办法
6474
查看次数

PHPUnit Stubbing类方法声明为"final"

我正在为一个类方法编写单元测试,该方法使用mock调用另一个类的方法,只需要调用的方法被声明为final,因此PHPUnit无法模拟它.我可以采取不同的方法吗?

例:

要被嘲笑的阶级

class Class_To_Mock
{
    final public function needsToBeCalled($options)
    {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

我的测试用例

class MyTest extends PHPUnit_Framework_TestCase
{
    public function testDoSomething()
    {
        $mock = $this->getMock('Class_To_Mock', array('needsToBeCalled'));
        $mock->expects($this->once())
             ->method('needsToBeCalled')
             ->with($this->equalTo(array('option'));
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:如果使用Mike B提供的解决方案,并且你有一个setter/getter用于你正在模拟的对象进行类型检查(为了确保将正确的对象传递给setter),你需要模拟getter on你正在测试的类,让它返回另一个模拟.

例:

要被嘲笑的阶级

class Class_To_Mock
{
    final public function needsToBeCalled($options)
    {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

嘲笑

class Class_To_MockMock
{
    public function needsToBeCalled($options)
    {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

要测试的课程

class Class_To_Be_Tested
{
    public function setClassToMock(Class_To_Mock $classToMock)
    {
        ...
    }

    public function getClassToMock()
    {
        ...
    }

    public function doSomething() …
Run Code Online (Sandbox Code Playgroud)

php phpunit unit-testing mocking

15
推荐指数
2
解决办法
8649
查看次数

如何对子类进行单元测试

单元测试子类的最佳方法是什么?让我们假设有一个我已经编写过测试的基类,并且有一些子类会覆盖父公共和/或受保护方法中的一些父行为.

我的子类的测试类是否应该扩展(并在适当的情况下覆盖测试方法)我的基类的测试类,以便应用所有基类测试?否则,我希望有重复的测试代码.

tdd phpunit unit-testing

15
推荐指数
2
解决办法
4687
查看次数

PHPUnit:如何断言一个类扩展另一个类?

在我的PHPUnit测试中,我想声明我正在测试的类扩展了另一个类.我怎么能用PHPUnit做到这一点?

php phpunit

15
推荐指数
2
解决办法
3855
查看次数

使用phpunit模拟抽象类中的具体方法

有没有什么好方法可以使用PHPUnit在抽象类中模拟具体方法?

到目前为止我发现的是:

  • expect() - > will()使用抽象方法工作正常
  • 它不适用于具体方法.而是运行原始方法.
  • 使用mockbuilder并给setMethods()提供所有抽象方法和具体方法.但是,它要求您指定所有抽象方法,使测试变得脆弱且过于冗长.
  • MockBuilder :: getMockForAbstractClass()忽略setMethod().


以下是一些单元测试,例如以上几点:

abstract class AbstractClass {
    public function concreteMethod() {
        return $this->abstractMethod();
    }

    public abstract function abstractMethod();
}


class AbstractClassTest extends PHPUnit_Framework_TestCase {
    /**
     * This works for abstract methods.
     */
    public function testAbstractMethod() {
        $stub = $this->getMockForAbstractClass('AbstractClass');
        $stub->expects($this->any())
                ->method('abstractMethod')
                ->will($this->returnValue(2));

        $this->assertSame(2, $stub->concreteMethod()); // Succeeds
    }

    /**
     * Ideally, I would like this to work for concrete methods too.
     */
    public function testConcreteMethod() {
        $stub = $this->getMockForAbstractClass('AbstractClass');
        $stub->expects($this->any())
                ->method('concreteMethod')
                ->will($this->returnValue(2)); …
Run Code Online (Sandbox Code Playgroud)

php phpunit unit-testing mocking

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

未加载Xdebug扩展.使用Xampp在Ubuntu上不会生成代码覆盖率

我在使用xampp的Ubuntu服务器上安装xdebug时遇到问题.我知道在Stack Overflow中有几个关于这类问题的问题,但我找不到任何解决方案.

首先这是php --version命令的输出:

PHP 5.3.8 (cli) (built: Sep 19 2011 13:29:27)  
Copyright (c) 1997-2011 The PHP Group  
Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies  
    with Xdebug v2.2.0, Copyright (c) 2002-2012, by Derick Rethans  
Run Code Online (Sandbox Code Playgroud)

输出php --ini命令:

Configuration File (php.ini) Path: /opt/lampp/etc  
Loaded Configuration File:         /opt/lampp/etc/php.ini  
Scan for additional .ini files in: (none)  
Additional .ini files parsed:      (none)  
Run Code Online (Sandbox Code Playgroud)

输出php -m命令:

[PHP Modules]  
bcmath  
bz2  
calendar  
Core  
ctype  
curl  
date  
dba  
dom  
ereg  
exif  
fileinfo …
Run Code Online (Sandbox Code Playgroud)

xampp ubuntu phpunit hudson xdebug

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

使用闭包进行PHPUnit测试

这就试图为一个类的方法编写一个测试,该类调用带闭包的mock方法.你如何验证被调用的闭包?

我知道你可以断言参数是一个实例Closure.但你怎么检查关闭的任何事情?

例如,如何验证传递的函数:

 class SUT {
     public function foo($bar) {
         $someFunction = function() { echo "I am an anonymous function"; };
         $bar->baz($someFunction);
     }
 }

 class SUTTest extends PHPUnit_Framework_TestCase {
     public function testFoo() {
         $mockBar = $this->getMockBuilder('Bar')
              ->setMethods(array('baz'))
              ->getMock();
         $mockBar->expects($this->once())
              ->method('baz')
              ->with( /** WHAT WOULD I ASSERT HERE? **/);

         $sut = new SUT();

         $sut->foo($mockBar);
     }
 }
Run Code Online (Sandbox Code Playgroud)

你无法比较PHP中的两个闭包.PHPUnit中有没有办法执行传入的参数或以某种方式验证它?

php phpunit closures

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

如何在单独的进程中运行单个phpUnit测试?

是否可以在同一个进程中运行一个phpUnit测试测试套件,但是确定要在自己的进程中运行的特定测试?

通常我用

@runTestsInSeparateProcesses
@preserveGlobalState disabled
Run Code Online (Sandbox Code Playgroud)

对于整个测试套件,但我只需要单独运行一个方法,并且我希望在单个进程中运行其余部分的速度提高.

谢谢

php phpunit unit-testing

15
推荐指数
1
解决办法
7064
查看次数

PHPUnit:模拟不存在的类

是否可以在PHPUnit中创建一个不存在的类的模拟?
假设我有一些类创建另一个类的实例,例如:

class TaskRunner
{
    public function runTasks()
    {
        // Run through some loop to get tasks and store each in $taskName
        // Get task instance by given task name 
        $task = $this->getTaskInstance($taskName);
        if ($task instanceof AbstractTask) {
            $task->run();
        }
    }

    protected function getTaskInstance($taskName)
    {
        // Just an example
        return new $taskName();
    }
}
Run Code Online (Sandbox Code Playgroud)

我想运行单元测试runTasks方法来检查创建的任务实例是否扩展了一些抽象类.
是否有可能不在文件系统中创建样本类来检查继承约束?
谢谢大家!

phpunit unit-testing mocking

15
推荐指数
2
解决办法
4672
查看次数

标签 统计

phpunit ×10

php ×7

unit-testing ×5

mocking ×3

hudson ×2

closures ×1

tdd ×1

ubuntu ×1

xampp ×1

xdebug ×1