【问题标题】:Testing old PHP versions with PHPUnit 7使用 PHPUnit 7 测试旧的 PHP 版本
【发布时间】:2018-11-26 11:52:00
【问题描述】:

我将 Composer 用于依赖项。

我的项目的依赖项需要 PHP 5.5 或更高版本,因此我想使用 PHPUnit 7 在 PHP 5.5 - 7.2(最新)上测试我的项目。

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

language: php
php:
  - '5.5'
  - '5.6'
  - '7.0'
  - '7.1'
  - '7.2'
  - hhvm # on Trusty only
  - nightly

问题是 PHPUnit 7 需要 PHP 7.1,所以我无法在 PHP 5.5 - 7.0 上测试项目。

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

如何使用带有 Travis CI 的 PHPUnit 7 在旧 PHP 版本上测试我的项目?

【问题讨论】:

  • “问题是在 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 现在具有返回类型声明,因此旧的测试用例现在与它不兼容。现在做什么?我仍然想对 PHP 5.5+ 使用相同的测试用例。

标签: php testing phpunit automated-tests


【解决方案1】:

Sebastian Bergmannnoticed我说 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 一起使用。- Sebastian Bergmann

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

【讨论】:

猜你喜欢
  • 2019-09-06
  • 1970-01-01
  • 1970-01-01
  • 2016-11-29
  • 2012-04-02
  • 2016-07-30
  • 2016-05-31
  • 2015-09-08
  • 1970-01-01
相关资源
最近更新 更多