Лучший способ для тестирования в разных средах? - PullRequest
0 голосов
/ 06 апреля 2009

Я работаю над проектом Java, который должен работать как на Mac OS X, так и на Windows . Есть много переменных, которые хранят пути к различным ресурсам и файлам.

Является ли лучший способ справиться с ними, поместить их всех в отдельный класс (скажем, константы) и поддерживать две ветви для файла в SVN?

Обновление: Это не просто проблема символа разделителя пути (прямая или обратная косая черта). Структура каталогов различна для обеих систем. На Mac я храню свои ресурсы в разных каталогах. Скажем, где-то изображения, где-то файлы журналов. В Windows я могу использовать совершенно разные каталоги. Не обязательно, чтобы все каталоги были частью одного дерева (т. Е. Они не находятся в разных каталогах в одном главном каталоге, называемом «ресурсами» или чем-то еще). Это не обязательно плохая практика программирования. Иногда вам нужен доступ к системным файлам или общим системным каталогам, и вы просто не можете поместить их в один верхний каталог

Ответы [ 3 ]

2 голосов
/ 06 апреля 2009

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

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

0 голосов
/ 06 апреля 2009

Не уверен, что именно проблема. (Java спроектирован так, чтобы быть достаточно независимым от платформы.)

Посмотрите на java.io.File статическую константу pathSeparator, pathSeparatorChar, и separator, separatorChar. Если у вас есть постоянная древовидная структура для организации ваших ресурсов (т.е. в точечном формате: resources.data.test.woof.txt), вы можете использовать File.separatorChar вместо '.' и у вас есть системный путь.

Также не пренебрегайте очень информативным методом System.getProperty ().

Этого должно быть достаточно, чтобы пройти любой путь на любой ФС.

0 голосов
/ 06 апреля 2009

Если вы используете JDK 1.4 или выше, и пользователь должен иметь возможность изменять эти пути, вы можете использовать встроенный Предпочтения API для их хранения / обновления. Если нет, вы можете определить константы для каждой ОС и вызвать System.getProperty(os.name), чтобы выяснить, какую из них использовать. Это по-прежнему должно исключать необходимость иметь отдельные сборки для каждой платформы.

...