You are here

class PHPUnit_Framework_Exception in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 vendor/phpunit/phpunit/src/Framework/Exception.php \PHPUnit_Framework_Exception

Base class for all PHPUnit Framework exceptions.

Ensures that exceptions thrown during a test run do not leave stray references behind.

Every Exception contains a stack trace. Each stack frame contains the 'args' of the called function. The function arguments can contain references to instantiated objects. The references prevent the objects from being destructed (until test results are eventually printed), so memory cannot be freed up.

With enabled process isolation, test results are serialized in the child process and unserialized in the parent process. The stack trace of Exceptions may contain objects that cannot be serialized or unserialized (e.g., PDO connections). Unserializing user-space objects from the child process into the parent would break the intended encapsulation of process isolation.

@since Class available since Release 3.4.0

Hierarchy

Expanded class hierarchy of PHPUnit_Framework_Exception

See also

http://fabien.potencier.org/article/9/php-serialization-stack-traces-and...

2 string references to 'PHPUnit_Framework_Exception'
PHPUnit_Framework_TestCase::runTest in vendor/phpunit/phpunit/src/Framework/TestCase.php
Override to run the test and assert its state.
Util_TestTest::testTestWithThrowsProperExceptionIfDatasetCannotBeParsed in vendor/phpunit/phpunit/tests/Util/TestTest.php
@covers PHPUnit_Util_Test::getDataFromTestWithAnnotation

File

vendor/phpunit/phpunit/src/Framework/Exception.php, line 33

View source
class PHPUnit_Framework_Exception extends RuntimeException implements PHPUnit_Exception {

  /**
   * @var array
   */
  protected $serializableTrace;
  public function __construct($message = '', $code = 0, Exception $previous = null) {
    parent::__construct($message, $code, $previous);
    $this->serializableTrace = $this
      ->getTrace();
    foreach ($this->serializableTrace as $i => $call) {
      unset($this->serializableTrace[$i]['args']);
    }
  }

  /**
   * Returns the serializable trace (without 'args').
   *
   * @return array
   */
  public function getSerializableTrace() {
    return $this->serializableTrace;
  }

  /**
   * @return string
   */
  public function __toString() {
    $string = PHPUnit_Framework_TestFailure::exceptionToString($this);
    if ($trace = PHPUnit_Util_Filter::getFilteredStacktrace($this)) {
      $string .= "\n" . $trace;
    }
    return $string;
  }
  public function __sleep() {
    return array_keys(get_object_vars($this));
  }

}

Members