С текущими версиями PHPUnit, по большей части, нет простого способа вставить свой собственный код. Единственная вещь, которая предлагает взаимозаменяемость - это TestRunner, и то, что вы описали, имеет смысл для меня.
Мне неизвестен какой-либо другой способ предоставления тестовых декораторов или изменения большинства других классов, используемых phpunit.
Кажется, что способ изменить порядок выполнения теста сработает, поэтому я не уверен, насколько хорошо он будет перетасовывать костюмы.
Другим способом достижения этого, возможно, менее трудным, было бы создание подкласса PHPUnit_Framework_TestSuite
случайным образом addTest
вашего кода.
Если это не сработает, другим вариантом будет использование файла конфигурации xml и создание набора тестов из тегов <file>
, и перед каждым выполнением некоторый код перемешивает эти теги. Afaik phpunit никак не сортирует их, поэтому выполнение будет случайным
Ищете ли вы все тесты на работоспособность и хотите найти взаимозависимые тесты?
Или вы действительно хотите увидеть, что что-то ужасно ломается, когда вы делаете много вещей, которые не должны ничего менять в неправильном порядке?
Я спрашиваю на тот случай, если вы еще не рассмотрели --process-isolation
. (Что, я полагаю, у вас есть, но спрашивать не повредит и может сэкономить ваше время и усилия :))
Когда вы запускаете каждый тест со свежим набором глобальных переменных, вы по крайней мере найдете все взаимозависимости тестов, и это всего лишь один переключатель, чтобы убедиться, что каждый тест в вашем наборе работает нормально самостоятельно.