Методы тестирования абстрактного класса с помощью PHPUnit

У меня есть абстрактный класс, в котором есть общие методы, которые я хочу протестировать, поэтому мне не нужно постоянно тестировать их в каждом классе, который расширяет этот класс.

abstract class Class1 implements iClass1
{
    const VALUE = 'A';
    private $Return;    
    public function __construct($Field = NULL)
    {
        if( ! is_null($Field) )
            $this->SetField($Field);
    }
    public function GetField()
    {
        return $this->Return;
    }
    public function SetField($Field)
    {
        if (strlen($Field) != 3)
        throw new CLASS1_EXCEPTION('Field "' . $Field . '" must be 3 digits.');

    $this->Return = $FieldCode;
    }
    abstract function CalculateData();
}

Я хочу создать базовый тестовый пример, который будет проверять конструктор, GetField и другие функции, а затем другие мои тестовые файлы смогут тестировать абстрактные функции.

Я хочу иметь возможность проверить, что константа не изменилась, поле выдает исключение и т. д.

ТЕСТ:

class TEST_CLASS1 extends PHPUnit_Framework_TestCase
{
    protected function setUp()
    {
        require_once('CLASS1.php');
    }
    public function testConstants()
    {
        $this->assertEquals(CLASS1, 'A');
    }

    /* @expectedException CLASS1_EXCEPTION
    public function testLargeFieldException()
    {
        $class1 = new CLASS1('ABCD');
        $class1 = new CLASS1();
        $class1->SetField('ABCD');
    }
}

Как мне создать тесты, так как я не могу создать объект CLASS1 как есть абстрактный класс?

7
задан Steven Scott 29 March 2012 в 18:49
поделиться