예제 #1
0
 /**
  * Adds a test to the suite.
  *
  * @param PHPUnit_Framework_Test $test
  * @param array                  $groups
  */
 public function addTest(PHPUnit_Framework_Test $test, $groups = [])
 {
     $class = new ReflectionClass($test);
     if (!$class->isAbstract()) {
         $this->tests[] = $test;
         $this->numTests = -1;
         if ($test instanceof self && empty($groups)) {
             $groups = $test->getGroups();
         }
         if (empty($groups)) {
             $groups = ['default'];
         }
         foreach ($groups as $group) {
             if (!isset($this->groups[$group])) {
                 $this->groups[$group] = [$test];
             } else {
                 $this->groups[$group][] = $test;
             }
         }
     }
 }
예제 #2
0
 /**
  * @param PHPUnit_Framework_Test $test
  *
  * @return bool
  */
 private function isOfInterest(PHPUnit_Framework_Test $test)
 {
     if (!$test instanceof PHPUnit_Framework_TestCase) {
         return false;
     }
     if ($test instanceof PHPUnit_Framework_WarningTestCase) {
         return false;
     }
     if (!empty($this->groups)) {
         foreach ($test->getGroups() as $group) {
             if (in_array($group, $this->groups)) {
                 return true;
             }
         }
         return false;
     }
     if (!empty($this->excludeGroups)) {
         foreach ($test->getGroups() as $group) {
             if (in_array($group, $this->excludeGroups)) {
                 return false;
             }
         }
         return true;
     }
     return true;
 }
예제 #3
0
 /**
  * Adds a test to the suite.
  *
  * @param  PHPUnit_Framework_Test $test
  * @param  array                  $groups
  */
 public function addTest(PHPUnit_Framework_Test $test, $groups = array())
 {
     $class = new ReflectionClass($test);
     if (!$class->isAbstract()) {
         $this->tests[] = $test;
         $this->numTests = -1;
         if ($test instanceof PHPUnit_Framework_TestSuite && empty($groups)) {
             $groups = $test->getGroups();
         }
         if (empty($groups)) {
             $groups = array('__nogroup__');
         }
         foreach ($groups as $group) {
             if (!isset($this->groups[$group])) {
                 $this->groups[$group] = array($test);
             } else {
                 $this->groups[$group][] = $test;
             }
         }
     }
 }
예제 #4
0
파일: XML.php 프로젝트: thanghexp/project
 /**
  * A test ended.
  *
  * @param PHPUnit_Framework_Test $test
  * @param float                  $time
  */
 public function endTest(PHPUnit_Framework_Test $test, $time)
 {
     if (!$test instanceof PHPUnit_Framework_TestCase) {
         return;
     }
     /* @var PHPUnit_Framework_TestCase $test */
     $groups = array_filter($test->getGroups(), function ($group) {
         if ($group == 'small' || $group == 'medium' || $group == 'large') {
             return false;
         }
         return true;
     });
     $node = $this->document->createElement('test');
     $node->setAttribute('className', get_class($test));
     $node->setAttribute('methodName', $test->getName());
     $node->setAttribute('prettifiedClassName', $this->prettifier->prettifyTestClass(get_class($test)));
     $node->setAttribute('prettifiedMethodName', $this->prettifier->prettifyTestMethod($test->getName()));
     $node->setAttribute('status', $test->getStatus());
     $node->setAttribute('time', $time);
     $node->setAttribute('size', $test->getSize());
     $node->setAttribute('groups', implode(',', $groups));
     $inlineAnnotations = PHPUnit_Util_Test::getInlineAnnotations(get_class($test), $test->getName());
     if (isset($inlineAnnotations['given']) && isset($inlineAnnotations['when']) && isset($inlineAnnotations['then'])) {
         $node->setAttribute('given', $inlineAnnotations['given']['value']);
         $node->setAttribute('givenStartLine', $inlineAnnotations['given']['line']);
         $node->setAttribute('when', $inlineAnnotations['when']['value']);
         $node->setAttribute('whenStartLine', $inlineAnnotations['when']['line']);
         $node->setAttribute('then', $inlineAnnotations['then']['value']);
         $node->setAttribute('thenStartLine', $inlineAnnotations['then']['line']);
     }
     if ($this->exception !== null) {
         if ($this->exception instanceof PHPUnit_Framework_Exception) {
             $steps = $this->exception->getSerializableTrace();
         } else {
             $steps = $this->exception->getTrace();
         }
         $class = new ReflectionClass($test);
         $file = $class->getFileName();
         foreach ($steps as $step) {
             if (isset($step['file']) && $step['file'] == $file) {
                 $node->setAttribute('exceptionLine', $step['line']);
                 break;
             }
         }
         $node->setAttribute('exceptionMessage', $this->exception->getMessage());
     }
     $this->root->appendChild($node);
 }