2014-01-29 5 views
1

У меня есть проект Erlang, содержащий множество разных приложений. Я использую Common Test, чтобы выполнить некоторые тесты.Работа с совместно используемыми помощниками в общих наборах тестов?

apps/foo/suites/foo_SUITE.erl 
apps/bar/suites/bar_SUITE.erl 

Я начинаю видеть дублирование кода полезности в этих люксах.

Куда я должен поместить код моей утилиты, чтобы он мог делиться между двумя наборами?

Я рассмотрел добавление другого приложения:

apps/test_stuff 

... но я не могу сделать свиты CT зависят от этого, не делая применение при испытании зависит от этого (или я могу?). Я не хочу этого делать, потому что test_stuff нужен только при тестировании.

У меня аналогичная проблема с моим eunit испытаний, как между приложениями (apps/foo/test VS. apps/bar/test), и где я использую аналогичную функциональность между eunit и КТ испытаний в одном приложении (apps/bar/suites против apps/bar/test). Могу ли я использовать одно и то же решение для этого случая? Или мне нужно задать еще один вопрос?

ответ

0

Считаете ли вы, что ct: require/1,2 может помочь вам, чтобы foo и bar SUITE потребовали test_stuff, прежде чем он будет выполнен? Для получения дополнительной информации http://www.erlang.org/doc/man/ct.html#require-1

+0

№ 'ct: require' гарантирует, что данная переменная существует в конфигурации. Насколько я могу судить, это не зависит от приложения. –

0

Это зависит от того, как вы упаковываете свои окончательные версии. Например, я использую арматуру для управления relase. У меня есть Cowboy с другими зависимостями для тестирования, но в моем reltool.config я опускаю его, поэтому он не упаковывается вместе с конечным продуктом. Я использую rebar для запуска Common Test, и он может добавить Cowboy на путь, не связав его как lib со всем остальным или добавить как зависимость от приложения, которое я тестирую.

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

Смежные вопросы