Использование аргументов командной строки или системных свойств из теста Paraitized Junit? - PullRequest
4 голосов
/ 13 января 2012

Я использую этот метод для настройки своих параметризованных данных:

@Parameterized.Parameters
public static Collection<Object[]> getStories() {
        Collection<Object[]> allStories = new ArrayList<Object[]>()
        new File(SPEC_DIRECTORY).eachFileRecurse(FileType.FILES) { file ->
            if (file.getName().endsWith('.story')) {
                Object[] args = [file.getName(), file]
                allStories << args
            }
        }
        return allStories
    }

Я запускаю основной тест с помощью gradle через gradle test, но мне не удается увидеть свойства системы.

Если я использую вызов gradle -Dfile=test.story, то System.getProperty('file') не определен.Как я могу передать аргументы этому параметризованному построителю данных?

Ответы [ 2 ]

5 голосов
/ 13 января 2012

Gradle запускает все тесты в отдельной JVM. Вы должны настроить задачу test:

test {
    systemProperty "file", "test.story"
}

Дополнительные сведения см. В справочнике Gradle DSL .

.
1 голос
/ 23 мая 2017

В интересах любых начинающих (таких как я), которые сталкиваются с этим вопросом; Я хотел бы прямо упомянуть, что systemProperty в тестовом задании gradle просто передает системные свойства тестовой jvm. Так что если вы просто используете

test{
systemProperty 'Chrome', 'Browser' }   

Вы не сможете получить доступ к свойству в своих тестах junit через 'System.getProperty ("Browser")'. Вместо этого его необходимо связать с командой gradle test -DBrowser = Chrome

Вышеприведенный случай является просто иллюстрацией, и его, вероятно, имеет смысл использовать -

test{
    systemProperty 'Chrome', System.getProperty('Browser') } 

вместе с

gradle test -DBrowser=Chrome
...