使用phpunit7测试旧的PHP版本

使用phpunit7测试旧的PHP版本,php,testing,phpunit,automated-tests,Php,Testing,Phpunit,Automated Tests,我正在使用Composer处理依赖项 我的项目依赖项需要PHP5.5或更高版本,所以我想用PHPUnit7在PHP5.5-7.2(最新版本)上测试我的项目 我使用不同的PHP版本设置了Travis CI测试: language: php php: - '5.5' - '5.6' - '7.0' - '7.1' - '7.2' - hhvm # on Trusty only - nightly 问题是PHPUnit7需要PHP7.1,所以我无法在PHP5.5-7.0上

我正在使用Composer处理依赖项

我的项目依赖项需要PHP5.5或更高版本,所以我想用PHPUnit7在PHP5.5-7.2(最新版本)上测试我的项目

我使用不同的PHP版本设置了Travis CI测试:

language: php
php:
  - '5.5'
  - '5.6'
  - '7.0'
  - '7.1'
  - '7.2'
  - hhvm # on Trusty only
  - nightly
问题是PHPUnit7需要PHP7.1,所以我无法在PHP5.5-7.0上测试项目


我可以用旧的PHPUnit版本测试旧的PHP版本,但问题是在PHPUnit 6之后,PHPUnit的代码单元是命名空间的,因此我必须为PHPUnit 4-5和PHPUnit 6-7编写不同的测试

如何在PHPUnit 7和Travis CI的旧PHP版本上测试我的项目?

告诉我PHPUnit 4.8具有前向兼容性,因此我可以使用PHPUnit 4.8、PHPUnit 5.6、PHPUnit 6和PHPUnit 7的名称空间语法


“问题是在PHPUnit 6之后,PHPUnit的代码单元是名称空间的,因此我必须为PHPUnit 4-5和PHPUnit 6-7编写不同的测试”是不正确的,因为PHPUnit 4.8与PHPUnit 5.6具有相同的前向兼容层。TL;DR:PHPUnit\Framework\TestCase可与PHPUnit 4.8、PHPUnit 5.6、PHPUnit 6和PHPUnit 7一起使用塞巴斯蒂安·伯格曼


有关前向兼容性的详细信息,请参阅。

“问题是,在PHPUnit 6之后,PHPUnit的代码单元是命名空间的,因此我必须为PHPUnit 4-5和PHPUnit 6-7编写不同的测试”,这是不正确的,因为PHPUnit 4.8与PHPUnit 5.6具有相同的前向兼容性层。TL;DR:
PHPUnit\Framework\TestCase
可以与PHPUnit 4.8、PHPUnit 5.6、PHPUnit 6和PHPUnit 7一起使用。@SebastianBergmann PHPUnit 8现在有返回类型声明,因此旧的测试用例现在与它不兼容。现在该怎么办?我仍然希望对PHP5.5+使用相同的测试用例。我可以确认,如果您为最新的Phpunit版本编写测试,则需要进行一些非常小的更改,才能让它们运行较旧的Phpunit版本。在Travis上,可以执行可变降级,例如基于w/composer的分期付款,这里有一个示例:-甚至可以返回到PHP 5.3:-它工作得非常好,几乎没有什么变化: