从3.6.6升级到3.7.5之后,PHPUnit Test断言有所不同

时间:2019-03-27 14:39:51

标签: cakephp phpunit cakephp-3.0 phpunit-testing

几天前,我将我的应用程序从3.6.6升级到了3.7.5。在进行升级之前,我运行了所有测试,这些测试提供了以下结果:

//环境
CakePHP版本:3.6.6
PHPUnit版本:6.5.14

//结果
测试:476,断言:1927

//用$ this-> assert
查找Sublime Text 3 1038 $ this-> assert的找到了。
因此:找到1038个$ this-> assert,结果中有1927个断言。

//控制器测试

use Cake\TestSuite\IntegrationTestCase;

class UsersControllerTest extends IntegrationTestCase
{

================================================ ======================

我用作曲家自我更新&&作曲家create-project --prefer-dist cakephp / app app_name创建了一个新项目。 我复制了所有文件,并实施了迁移指南中记录的更改。

我登录后一切正常(中间件csrf令牌不匹配错误除外,但这是另一个问题。)

我再次运行测试,并提供了以下结果。

//环境
CakePHP版本:3.7.5
PHPUnit版本:6.5.8

//结果
测试:497,断言:1135

//用$ this-> assert
查找Sublime Text 3 1059 $ this-> assert的找到了。
因此:找到1059 $ this-> assert,结果中有1135个断言。

//控制器测试

use Cake\TestSuite\TestCase;
use Cake\TestSuite\IntegrationTestTrait;

class UsersControllerTest extends TestCase
{
    use IntegrationTestTrait;

================================================ ======================

我已经仔细检查过,我准确地复制了所有内容,并且所有内容都与理解无关 测试结果。

我还使用Sublime Text 3来检查升级后是否没有再调用$ this-> assert 792次,但这考虑到我又进行了21次测试,因此确认这是正确的次数。

我唯一看到的区别是:

  1. 在3.6.6中使用IntegrationTestCase。
  2. 在3.6.6 PHPUnit版本中:使用6.5.14。

  3. 在3.7.5 TestCase和IntegrationTestTrait中使用。

  4. 在3.7.5 PHPUnit版本中:使用6.5.8。

================================================ ======================

//问题:

我希望有人能帮助我理解为什么我可以再进行21项测试,却减少792条断言?是使用TestCase和IntegrationTestTrait代替IntegrationTestCase或PHPUnit版本差异还是其他方式?

谢谢。 Z

================================================ ======================

@ndm,谢谢您的输入。

我想听从您的建议,但情况已经改变。我今天早上起床,试图复制昨天的结果。我的新3.7.5应用测试结果相同:

//环境
CakePHP版本:3.7.5
PHPUnit版本:6.5.8

//结果
测试:497,断言:1135

然后,我加载了旧的3.6.6应用程序并再次运行测试,但是PHPUnit版本已更改,结果如下:

//环境
CakePHP版本:3.6.6
PHPUnit版本:6.5.8

//结果
测试:497,断言:1135

我以为我昨天犯了一个错误,并复制了错误的文件夹,所以我拿出了未被触及的主备份(一直回到19/01/19)。我在CakePHP版本3.6.6上加载了4个备份。所有这些都显示了这些结果。

//环境
CakePHP版本:3.6.6
PHPUnit版本:6.5.8

//结果
测试:497,断言:1135

所以现在我想知道PHPUnit 6.5.14在哪里?

自19/01/19以来,我已经在CakePHP 3.6.6应用程序上运行了大约50次测试,当您运行测试时,cmd行始终显示PHPUnit版本,因此我知道我在使用PHPUnit 6.5.14。

现在我想知道什么可以解释这个?这也意味着我无法复制昨天的结果。

您的建议使我安心,即:可能有很多不同的事情。另外,我还需要权衡将我与理由相识的好处隔离出来所花费的时间。

就目前而言,我决定将此问题放到待办事项清单上,因为它仍然可以运行所有测试,并且可能就像您提到的那样:也许CakePHP提供的某些断言方法已更改,因此它们内部减少了对PHPUnit断言方法的调用。也许在早期版本中,PHPUnit的计算不正确。也许完全不同,可能有很多原因”,而且到达底部的时间不详。

希望在接下来的几个月中,我可以腾出一些时间来使用它,但目前,我已将其提交到“ Sherlock Holmes和缺少的PHPUnit版本的情况下”。 :)

再次感谢Z。

0 个答案:

没有答案