用于测试用例的PHPUnit设置和tearDown

mar*_*cio 5 phpunit unit-testing

PHPUnit 分别在测试用例中的每个测试之前和之后运行setuptearDown运行事件.在我的特定场景中,我还想运行类似于testCaseSetup和的东西testCaseTearDown.那可能吗?

目前的解决方案如下:

<?php

class MyTestCase extends \PHPUnit_Framework_TestCase
{

    public function __construct($name = NULL, array $data = array(), $dataName = '')
    {
        // My test case setup logic
        parent::__construct($name, $data, $dataName);
    }

    public function __destruct()
    {
        // My test case tear down logic
    }
}
Run Code Online (Sandbox Code Playgroud)

但由于以下原因,它似乎远非最佳:

  • 我必须重新声明PHPUnit_Framework_TestCase构造和重定向任何参数.如果在版本更新时更改了PHPUnit构造函数,我的测试用例将停止.
  • 可能PHPUnit_Framework_TestCase没有宣布像这样使用.

我想知道是否有更好的解决方案.有任何想法吗?

Cyp*_*ian 10

是的,为此目的有一些特殊的方法:setUpBeforeClasstearDownAfterClass.

class TemplateMethodsTest extends PHPUnit_Framework_TestCase
{
    public static function setUpBeforeClass()
    {
        // do sth before the first test
    } 

    public static function tearDownAfterClass()
    {
        // do sth after the last test
    } 
Run Code Online (Sandbox Code Playgroud)