Использовать внешние файлы на основе ОС из теста junit при сборке с помощью hudson / jenkins? - PullRequest
0 голосов
/ 17 ноября 2011

В проекте maven у меня есть несколько тестов junit, где мне нужно ссылаться на некоторые библиотеки времени выполнения (время выполнения birt) при запуске тестов:

  @Before
  public void setup() {
    // init osgi/birt rte.
    BEngine.getEngine().init("C:\\birt-runtime-2_6_1\\ReportEngine\\");
  }

  @Test
  public void testname() {
       // run test that requires the initialization of the above rte.
  }

Это прекрасно работает при локальном запуске тестов из Eclipse. Мой проект maven также построен на linux-сервере под управлением jenkins, но в настоящее время я отключаю тесты, для которых требуются указанные выше библиотеки времени выполнения.

Я собираюсь скопировать библиотеки времени выполнения на сервер, на котором выполняется Hudson, и посмотреть, смогу ли я заставить Hudson определить местоположение этих файлов при выполнении тестов на Hudson.

Но для этого мне нужно использовать правильное местоположение rte в тестах.

Есть предложения для этого? Например, используя переменные env, которые могут быть поняты в Windows / Linux?

1 Ответ

2 голосов
/ 17 ноября 2011

Если значения не изменятся в течение времени жизни тестового прогона (т. Е. Сборки), используйте переменную окружения и просто установите ее в качестве опции в подключаемом модуле surefire, systemPropertyVariables .

Правильный способ сделать это для разных сред - использовать разные профили в maven.

Вы можете иметь профиль по умолчанию, который включает в себя набор переменных для окон и еще один для Hudson.

РЕДАКТИРОВАТЬ: Для правильного запуска тестов из Eclipse, просто вы можете иметь значение по умолчанию для переменной

public String getRteLocation() {
    String s = System.getProperty("test.rte.location");
    return (s == null) ? "C:\\birt-runtime-2_6_1\\ReportEngine\\" : s;
}

@Before
public void setup() {
    // init osgi/birt rte.
    BEngine.getEngine().init(getRteLocation());
 }

или просто установите переменную среды в Run Configuration в Eclipse.

РЕДАКТИРОВАТЬ: Просто пояснение, когда я говорю переменные среды, я имею в виду переменные -D, установленные из командной строки Java.

...