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

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

oneTimeTearDown()函数相同的问题。

有可能在PHPUnit中这样做吗?

2 Solutions collect form web for “PHPUnit:如何创build一个函数来为我的所有testing调用一次?”

从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()我最终引导问题,我相信我可以修复,但我使用上面的方法完美。

  • 用PHPUnittestingPHP头文件
  • 当使用$ mock-> expect($ this-> at(...))时,PHPUnit“Mocked方法不存在”
  • 使用Composer和autoload.php自动加载PHPUnit中的类
  • PHPUnit:断言两个数组是相等的,但是元素的顺序并不重要
  • phpunit模拟方法多个调用不同的参数
  • PHPUnit达到100%的代码覆盖率
  • PHPUnittesting的“Web界面”?
  • 如何用phpunit运行单一testing方法?
  • 我可以在PHPUnit中“模拟”时间吗?
  • 如何testingPHPUnit模拟对象中的第二个参数
  • 如何告诉phpunit停止失败