2009-04-06 4 views
0

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

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

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

ответ

2

Вы изучили использование файла свойств вместо этого? Apache commons config должен быть кросс-платформенным и интеллектуально обрабатывать файлы свойств.

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

0

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

0

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

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

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

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

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