#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 тест.
Единственные различия, которые я вижу, это:
- В 3.6.6 используется IntegrationTestCase.
-
В версии 3.6.6 PHPUnit используется 6.5.14.
-
В 3.7.5 используется TestCase и IntegrationTestTrait.
- В версии 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
и т.д.), Чтобы проверить, когда именно изменяется количество утверждений, а затем проверить, что именно изменилось между двумя выпусками. Также используйте копию вашего оригинального приложения, а не новое.