2013-10-05 4 views
3

У меня есть набор PHP-проектов, некоторые из которых зависят от других. У всех есть тесты PHPUnit. Все можно установить через Composer и указать их зависимости, используя файл composer.json. Каждый проект имеет файл phpunit.xml.dist в своем корне, который указывает на файл bootsrap.Запуск всех тестов PHPUnit для проекта с использованием Composer

Теперь у меня есть проект Foo, который имеет ряд прямых зависимостей и несколько косвенных. Для CI Foo я бы хотел запустить все свои тесты и все те из его зависимостей.

Можно ли это сделать через Composer? Если нет, есть ли стандартный способ чистых способов сделать это?

ответ

2

Композитор не поможет вам в тестировании.

И я сомневаюсь, что это можно сделать автоматически. Вы не знаете заранее, где находятся тесты для любой требуемой библиотеки. Возможно даже, что тесты не включены в выпущенную версию библиотеки, потому что они служат не прямой цели.

Если вы знаете, что все ваши библиотеки имеют свои тесты где-то там, вам придется самому что-то закодировать, чтобы собрать все эти тесты в большом мета-тесте. Но мне интересно, действительно ли это будет полезно.

Я использую CI с Jenkins и несколькими внутренними библиотеками, и я создал Jenkins, чтобы начать тесты зависимой библиотеки, когда я что-то меняю в требуемой библиотеке. dependency graph view plugin помогает справиться с этим.

4

Я полагаю, вы могли бы написать TestSuite, который включал все, или написать скрипт, который рекурсивно просверливается во все каталоги, чтобы найти тесты.

Однако, как правило, вы не запускаете тесты библиотек и зависимостей, кроме, возможно, при их первой установке. Вы не (читайте: не должны) действительно меняете библиотеку или код зависимостей в своем приложении (есть исключения из этого), поэтому, как только вы установили зависимость и запустите ее тесты, если они пройдут, они всегда должны проходить, потому что вы ничего не изменили.

Если вы изменяете код зависимостей, вы действительно должны это делать отдельно, особенно если у вас есть зависимость. Я предполагаю, что вы сделаете это по одной из двух причин: исправить ошибку или добавить функцию. Откройте проект/файлы для своей зависимости, напишите один или несколько тестов для изменения, внесите изменения, убедитесь, что тесты проходят, зафиксируйте изменения в вашей зависимости. Затем приложите приложение к обновленной зависимости.

Это связано с тем, что вы не должны беспокоиться о выполнении тестов библиотеки или зависимостей, поскольку это должны быть черные ящики, которые вы не трогаете в своем приложении.

+0

В моем случае у меня есть много зависимостей, и я бегу их испытания, когда они переодеться. Я с вами, что все тесты вместе не нужны. Однако в этом нет вреда, и это помогло бы успокоить некоторых людей. Имейте в виду мой вопрос, как это сделать, а не если я это сделаю. –

+0

Я знаю, что вы спросили, как, и я дал пару потенциальных вариантов в начале моего ответа. Однако, если кто-то спросил меня, как положить нож через их руку, я все равно объясню, почему они не должны. При этом, если вы делаете это, чтобы успокоить/умиротворить людей, возможно, вам нужно, чтобы эти «некоторые люди» прочитали мой первоначальный ответ, чтобы вам не пришлось запускать все эти тесты. Я просто пытаюсь сэкономить вам время, стресс и здравомыслие. Я чувствую, что это один из тех случаев, когда результат в этом не стоит. – echosa

0

Вы можете попробовать composer scripts

{ 
    "scripts": { 
     "test": "phpunit" 
    } 
} 

Или, может создать makefile, а затем вызвать, что с помощью композитора

{ 
    "scripts": { 
     "build-all": "make build-all" 
    } 
} 
Смежные вопросы