Fork me on GitHub
a Sensio Labs Product

Folding Bike (v3.91.3) edition

Rule php_unit_no_expectation_annotation

Usages of @expectedException* annotations MUST be replaced by ->setExpectedException* methods.

Warnings

This rule is RISKY

Risky when PHPUnit classes are overridden or not accessible, or when project has PHPUnit incompatibilities.

This rule is CONFIGURABLE

You can configure this rule using the following options: target, use_class_const.

Configuration

target

Target version of PHPUnit.

Allowed values: '3.2', '4.3' and 'newest'

Default value: 'newest'

use_class_const

Use ::class notation.

Allowed types: bool

Default value: true

Examples

Example #1

Default configuration.

--- Original
+++ New
 <?php
 final class MyTest extends \PHPUnit_Framework_TestCase
 {
     /**
-     * @expectedException FooException
-     * @expectedExceptionMessageRegExp /foo.*$/
-     * @expectedExceptionCode 123
      */
     function testAaa()
     {
+        $this->setExpectedExceptionRegExp(\FooException::class, '/foo.*$/', 123);
+
         aaa();
     }
 }

Example #2

With configuration: ['target' => '3.2'].

--- Original
+++ New
 <?php
 final class MyTest extends \PHPUnit_Framework_TestCase
 {
     /**
-     * @expectedException FooException
-     * @expectedExceptionCode 123
      */
     function testBbb()
     {
+        $this->setExpectedException(\FooException::class, null, 123);
+
         bbb();
     }

     /**
      * @expectedException FooException
      * @expectedExceptionMessageRegExp /foo.*$/
      */
     function testCcc()
     {
         ccc();
     }
 }

Rule sets

The rule is part of the following rule sets:

References

The test class defines officially supported behaviour. Each test case is a part of our backward compatibility promise.