Пару дней назад я обновил свое приложение с 3.6.6 до 3.7.5.Перед обновлением я выполнил все свои тесты, которые дали следующие результаты:
// Среда Версия CakePHP: 3.6.6Версия PHPUnit: 6.5.14
// Результаты Тесты: 476, утверждения: 1927
// Sublime Text 3 найти с помощью $ this-> assert 1038 $ this-> assert's found.Поэтому: 1038 $ this-> assert found и 1927 подтверждений в результатах.
// Проверка контроллера
use Cake\TestSuite\IntegrationTestCase;
class UsersControllerTest extends IntegrationTestCase
{
======================================================================
Я создал новый проект с самообновлением композитора && composer create-project--prefer-dist cakephp / app имя_приложения.Я скопировал все файлы и применил изменения, описанные в руководстве по миграции.
Я вошел в систему и все заработало (за исключением ошибки несоответствия токена промежуточного программного обеспечения csrf, но это еще одна проблема.)
Iснова запустил мои тесты и, при необходимости, получил следующие результаты.
// Среда Версия CakePHP: 3.7.5Версия PHPUnit: 6.5.8
// Результаты Тесты: 497, утверждения: 1135
// Sublime Text 3 найти с помощью $ this-> assert 1059 $ this-> assert's found.Следовательно: найдено 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 тест.
Единственные различия, которые я вижу:
- В 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 или что-то еще?
Спасибо.Z.
===========================================================================
@ ndm, спасибо за ввод.
Я быЯ хотел бы последовать вашему совету, но ситуация изменилась.Я встал сегодня утром и попытался повторить результаты вчерашнего дня.Мои новые результаты тестирования приложения 3.7.5 были такими же:
// Environment Версия 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).Я загрузил 4 резервных копии всего на CakePHP версии 3.6.6.Все они показывают эти результаты.
// Среда Версия 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 неправильно вычислял вещи в более ранних версиях. Может быть, что-то совершенно иное, может быть много причин", и это неизвестное количество времени, чтобы добраться доbottom of.
Надеюсь, что в течение следующих нескольких месяцев я смогу освободить некоторое время, чтобы заняться этим, но на данный момент я подал его под рубрикой «Шерлок Холмс и случай с отсутствующей версией PHPUnit».:)
Еще раз спасибо, Z.