使用PHPUnit如何在运行任何测试之前运行初始化代码?

时间:2011-11-10 20:10:13

标签: phpunit

目前我们运行代码来设置setUpBeforeClass中的数据库。但是,这会在测试每个测试类之前运行。是否可以在运行任何测试之前运行一次代码,并且在所有测试完成后也可以运行一些代码?

3 个答案:

答案 0 :(得分:13)

这正是bootstrap文件旨在处理的内容。默认情况下,PHPUnit将执行当前目录中bootstrap.php中的代码。您可以使用phpunit.xml配置文件或--bootstrap命令行开关指向其他文件。

在尝试查找要运行的测试之前,此文件只执行一次。它允许您在实例化或运行任何测试之前设置包含路径,自动加载器,常量等。

答案 1 :(得分:0)

我同意Kris的评论,你想要避免这种行为,但如果你需要,也许你可以这样做:

class My_PHPUnit_Framework_TestCase extends PHPUnit_Framework_TestCase {
    function __construct() {
       parent::__construct();
       // Insert your one time setup scripts here
    }
}

然后确保您的测试扩展My_PHPUnit_Framework_TestCase而不是PHPUnit_Framework_TestCase。

答案 2 :(得分:-2)

你为什么要那样做?单元测试应该彼此独立,因此在每次测试运行之前,所有前置条件也应该恢复到相同的状态。

如果您觉得需要为整个套件运行一次初始化方法,那么您的测试可能没有正确设置。