title: Test methods of Abstract Class with PHPUnit
body: <p>I have an abstract class that has common methods in it, that I wish to test, so I do not have to keep testing them in each class that extends this class.</p>
  
  <pre><code>abstract class Class1 implements iClass1
  {
      const VALUE = 'A';
      private $Return;    
      public function __construct($Field = NULL)
      {
          if( ! is_null($Field) )
              $this-&gt;SetField($Field);
      }
      public function GetField()
      {
          return $this-&gt;Return;
      }
      public function SetField($Field)
      {
          if (strlen($Field) != 3)
          throw new CLASS1_EXCEPTION('Field "' . $Field . '" must be 3 digits.');
  
      $this-&gt;Return = $FieldCode;
      }
      abstract function CalculateData();
  }
  </code></pre>
  
  <p>I want to create the basic test case then that will test the constructor, and the GetField and other functions, then my other test files can test the abstract functions.</p>
  
  <p>I want to be able to test the const has not changed, the field throws the exception etc...</p>
  
  <p>TEST:</p>
  
  <pre><code>class TEST_CLASS1 extends PHPUnit_Framework_TestCase
  {
      protected function setUp()
      {
          require_once('CLASS1.php');
      }
      public function testConstants()
      {
          $this-&gt;assertEquals(CLASS1, 'A');
      }
  
      /* @expectedException CLASS1_EXCEPTION
      public function testLargeFieldException()
      {
          $class1 = new CLASS1('ABCD');
          $class1 = new CLASS1();
          $class1-&gt;SetField('ABCD');
      }
  }
  </code></pre>
  
  <p>How do I create the tests since I can not create the CLASS1 object as it is an abstract class?</p>