PHPUnit:如何创build一个函数来为我的所有testing调用一次?

我有一个PHPUnittesting用例类(由一些testing函数组成)。 我想写一个oneTimeSetUp()函数,在类中的所有testing中调用一次(不像标准的setUp()函数,这个函数在类中的每个testing中都会调用一次)。 换句话说,我正在寻找一个等同于JUnit @BeforeClass注解的PHPUnit。

oneTimeTearDown()函数相同的问题。

有可能在PHPUnit中这样做吗?

从PHPUnit文档的第6部分看一下setUpBeforeClass()

对于一次tearDown你应该使用tearDownAfterClass();

这两个方法都应该在你的类中定义为静态方法。

我带着同样的问题来到这个页面,然而,所有的课程都接受了答案,而对我来说却不是正确的答案。

如果你和我一样,你的第一个“集成testing”是清除数据库,并运行迁移。 这让你自己在所有testing的数据库基准。 在这一点上,我经常更改迁移文件,因此设置基线确实是所有testing的一部分。

迁移需要一段时间,所以我不希望它在所有testing中运行。

然后我需要build立数据库testing每一块。 我需要写一个订单testing,但首先我需要创build一些产品并testing,然后我需要testing一个导入function。

所以,我所做的是SUPER容易,但在互联网上没有很好地解释。 我创build了一个简单的testing来设置数据库。 然后在你的phpspec.xml文件中添加一个testing套件….

 <testsuite name="Products"> <file>tests/in/SystemSetupTest.php</file> <file>tests/in/ProductTest.php</file> <file>tests/in/ProductImportTest.php</file> </testsuite> 

并在SystemSetupTest.php ….

 class SystemSetupTest extends ApiTester { /** @test */ function system_init() { fwrite(STDOUT, __METHOD__ . "\n"); self::createEM(); //this has all the code to init the system... } } 

然后像这样执行它:

phpunit –testsuite产品

最后,它更容易。 这将允许我正确地build立我的系统。

此外,我使用laravel 5.当使用setUpBeforeClass()我最终引导问题,我相信我可以修复,但我使用上面的方法完美。