Тестовые утверждения PHPUnit отличаются после обновления с 3.6.6 до 3.7.5

#cakephp #cakephp-3.0 #phpunit

#cakephp #cakephp-3.0 #phpunit

Вопрос:

Пару дней назад я обновил свое приложение с 3.6.6 до 3.7.5. Перед обновлением я запустил все свои тесты, которые дали следующие результаты:

// Environment
Версия CakePHP: 3.6.6
Версия PHPUnit: 6.5.14

// Результаты
Тестов: 476, утверждений: 1927

// Sublime Text 3 найдите с помощью $this->assert
1038 $this-> найдено утверждение.
Следовательно: найдено 1038 $ this-> assert и 1927 утверждений в результатах.

// Тест контроллера

 use CakeTestSuiteIntegrationTestCase;

class UsersControllerTest extends IntegrationTestCase
{
  

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

Я создал новый проект с самообновлением composer amp; amp; composer create-project —prefer-dist cakephp/app имя_приложения. Я скопировал все файлы и внедрил изменения, описанные в руководстве по миграции.

Я вошел в систему, и все заработало (за исключением ошибки несоответствия токена csrf промежуточного программного обеспечения, но это другая проблема.)

Я снова запустил свои тесты и, где были предоставлены следующие результаты.

// Environment
Версия CakePHP: 3.7.5
Версия PHPUnit: 6.5.8

// Результаты
Тестов: 497, утверждений: 1135

// Sublime Text 3 найдите с помощью $this->assert
1059 $this-> найдено утверждение.
Следовательно: найдено 1059 $ this-> assert и 1135 утверждений в результатах.

// Тест контроллера

 use CakeTestSuiteTestCase;
use CakeTestSuiteIntegrationTestTrait;

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 или, может быть, что-то еще?

Thanks. Z.

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

@ndm, thanks for the input.

I would like to follow your advice but the situation has changed. I got up this morning and tried to replicate the results from yesterday. My new 3.7.5 app test results were the same:

// Environment
CakePHP Version: 3.7.5
PHPUnit Version: 6.5.8

// Результаты
Тестов: 497, утверждений: 1135

Затем я загрузил свое старое приложение 3.6.6 и снова запустил тесты, но версия PHPUnit изменилась, и вот результаты:

// Environment
Версия CakePHP: 3.6.6
Версия PHPUnit: 6.5.8

// Результаты
Тестов: 497, утверждений: 1135

Вчера я подумал, что допустил ошибку и скопировал не ту папку, поэтому я удалил свои основные резервные копии, которые не были затронуты (вплоть до 19/01/19). Я загрузил 4 резервные копии, все на CakePHP версии 3.6.6. Все они показывают эти результаты.

// Environment
Версия 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 не вычислял что-то неправильно в более ранних версиях. Возможно, что-то совершенно другое, может быть много причин » и требуется неизвестное количество времени, чтобы разобраться.

Надеюсь, в течение следующих нескольких месяцев я смогу высвободить немного времени, чтобы разобраться в этом, но на данный момент я зарегистрировал это в разделе «Шерлок Холмс и случай с отсутствующей версией PHPUnit». 🙂

Еще раз спасибо, Z.

Комментарии:

1. Возможно, некоторые методы утверждения, предоставляемые CakePHP, изменились таким образом, что они внутренне выполняют меньше вызовов методов утверждения PHPUnit. Возможно, PHPUnit не вычислял что-то неправильно в более ранних версиях. Возможно, что-то совершенно другое, может быть много причин, о которых здесь довольно сложно рассказать. Вы могли бы начать с обновления PHPUnit и CakePHP по отдельности, а также с этапов обновления версии (т.Е. 3.6.6 > 3.6.7 > 3.6.8 и т.д.), Чтобы проверить, когда именно изменяется количество утверждений, а затем проверить, что именно изменилось между двумя выпусками. Также используйте копию вашего оригинального приложения, а не новое.