How to exclude file from PHPUnit test suite in xml config?

前端 未结 7 725
夕颜
夕颜 2021-02-02 06:39

I have following, very simple, XML config for PHPUnit:


    
        

        
7条回答
  •  耶瑟儿~
    2021-02-02 07:30

    There are a number of ways to not run a particular test - putting it into a blacklist so it's never run may not be the way - as changing it means editing the blacklist, and you'll often endup bouncing it in and out of version control.

    There are several other ways that may be more appropriate:

    If a test is not yet ready to run:

    $this->markTestIncomplete('This test has not been implemented yet.');
    

    If there's an outside reason it should not be run, skip it:

    if (!extension_loaded('mysqli')) {
        $this->markTestSkipped('The MySQLi extension is not available.');
    }
    

    You can also put that into the setUp() function, so it will skip all the tests in a test-class.

    You can make a test dependant on a previous one succeeding:

    public function testEmpty()
    {
        $stack = array();
        $this->assertTrue(empty($stack));
        return $stack;   // also sends this variable to any following tests - if this worked
    }
    /**
     * only runs if testEmpty() passed
     *
     * @depends testEmpty
     */
    public function testPush(array $stack)
    {
    }
    

    The @group -name- annotation is one of the best ways to specifically stop, or run one group of tests

    /**
     * @group database
     * @group remoteTasks
     */
    public function testSomething()
    {
    }
    

    testSomething() is now in two groups, and if either is added on the command line (or in the config.xml) --exclude-group parameter. it won't be run. Likewise, you could run only tests that belong to a particular group - say named after a feature, or bug report.

提交回复
热议问题