Поддерживает ли JUnit файлы свойств для тестов?

У меня есть тесты JUnit, которые необходимо запускать в различных промежуточных средах. Каждая из сред имеет разные учетные данные для входа или другие аспекты, характерные для этой среды. Мой план состоит в том, чтобы передать переменную среды в виртуальную машину, чтобы указать, какую среду использовать. Затем используйте эту переменную для чтения из файла свойств.

Есть ли у JUnit какие-либо встроенные возможности для чтения файла .properties?


person Dave Jensen    schedule 12.10.2009    source источник


Ответы (5)


java имеет встроенные возможности для чтения файла .properties, а JUnit имеет встроенные возможности для запуска кода установки перед выполнением набора тестов.

свойства чтения java:

Properties p = new Properties();
p.load(new FileReader(new File("config.properties")));

документация по запуску Junit

сложите эти 2 вместе, и у вас должно быть то, что вам нужно.

person pstanton    schedule 13.10.2009

Обычно предпочтительнее использовать относительные файлы путей к классам для свойств модульных тестов, чтобы их можно было запускать, не беспокоясь о путях к файлам. Путь может отличаться на вашем устройстве разработки, на сервере сборки или где-либо еще. Это также будет работать с ant, maven, eclipse без изменений.

private Properties props = new Properties();

InputStream is = ClassLoader.getSystemResourceAsStream("unittest.properties");
try {
  props.load(is);
}
catch (IOException e) {
 // Handle exception here
}

поместив файл "unittest.properties" в корень пути к классам.

person scott m gardner    schedule 09.08.2012
comment
Это хорошая информация. Вы можете рассмотреть возможность сделать это комментарием к уже принятому ответу; там его с большей вероятностью прочитает тот, кто наткнется на это в своих результатах. - person chb; 10.08.2012
comment
Это правильное решение, если вы поместите файлы свойств в src/test/resources - person ACV; 25.02.2019

Этот ответ призван помочь тем, кто использует Maven.

Я также предпочитаю использовать локальный загрузчик классов и закрывать свои ресурсы.

  1. Создайте файл свойств теста с именем /project/src/test/resources/your.properties.

  2. Если вы используете IDE, вам может потребоваться пометить /src/test/resources как «Корень тестовых ресурсов».

  3. добавьте код:


// inside a YourTestClass test method

try (InputStream is = loadFile("your.properties")) {
    p.load(new InputStreamReader(is));
}

// a helper method; you can put this in a utility class if you use it often

// utility to expose file resource
private static InputStream loadFile(String path) {
    return YourTestClass.class.getClassLoader().getResourceAsStream(path);
}
person Barett    schedule 01.01.2019

Разве вы не можете просто прочитать файл свойств в вашем методе установки?

person Nate    schedule 13.10.2009

Если цель состоит в том, чтобы загрузить файл .properties в свойства системы, то системные заглушки (https://github.com/webcompere/system-stubs) может помочь:

Объект SystemProperties, который можно использовать либо как правило JUnit 4 для применения его в методе тестирования, либо как часть подключаемого модуля JUnit 5, позволяет задавать свойства из файла свойств:

SystemProperties props = new SystemProperties()
    .set(fromFile("src/test/resources/test.properties"));

Затем необходимо сделать активным объект SystemProperties. Это достигается либо пометкой его @SystemStub в JUnit 5, либо использованием его подкласса SystemPropertiesRule в JUnit4, либо выполнением тестового кода внутри метода SystemProperties execute.

person Ashley Frieze    schedule 16.01.2021