Может ли тест Ruby получить местоположение папки, из которой Rake его выполнил?

Может ли тест Ruby получить местоположение папки, из которой Rake его выполнил? Я хочу бежать Test::Unit модульные тесты с использованием Rake, но мои определенные "наборы тестов" в Rake должны быть в состоянии найти расположения библиотек относительно корня моего проекта.

С Maven я могу установить системное свойство следующим образом:

<properties>
    <main.basedir>${project.basedir}</main.basedir>
</properties>

И тогда Java может ссылаться на это так:

String baseDir = System.getProperty("main.basedir");

Может ли Ruby сделать что-то подобное? Если так, то как? Нужно ли использовать Rake namespace-require + include? Не создавать свою собственную платформу: просто пытаться выполнить самые основные тестовые настройки. У меня есть несколько файлов lib, которые я создал, и которые хотят использовать мои тесты.

Это не работает, потому что жестко кодирует базовый каталог в файл класса:

base_dir = File.expand_path(File.join(File.dirname(__FILE__), ".."))

1 ответ

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

обычно у тестов есть доступ к пути lib, и вы можете просто потребовать то, что вы хотите использовать в тестах напрямую. Вы используете что-то вроде rspec или test::unit? Вы готовите свой собственный тестовый фреймворк?

так что в целом ответ - да, вы можете это сделать, но вам не нужно это делать. может показать вам, как только вы уточнить, какой тестовый фреймворк вы используете.

редактировать

Для тестового модуля это описывает почти то, что вы хотите сделать: https://github.com/test-unit/test-unit/blob/master/doc/text/how-to.md

Хелпер run_test.rb помещен в тест. Вы видите, как создается базовый каталог, используя путь к файлу (как упомянуто выше) и как каталог lib помещается в путь загрузки.

Другие вопросы по тегам