picocli: почему этот тест JUnit не проходит? - PullRequest
0 голосов
/ 09 апреля 2019

Тест не будет работать правильно при попытке запустить тест JUnit с ошибками

package picocli;

import picocli.CommandLine.Option;

public class ComparatorRunnerConfig {

      @Option(names = {"-rc", "--report-class"}, required = false,
              description = "define report")
      private String report;

      public String getReport() {
            return report;
      }
}

Мой тест JUnit:

package picocli;

import static org.junit.Assert.*;
import org.junit.Test;

public class ConfigurationTest {

    @Test
    public void testBasicConfigOptions() {
        String args = "-rc BlahBlah";
        ComparatorRunnerConfig mfc = new ComparatorRunnerConfig();
        new CommandLine(mfc).parse(args);

        String myTestValue = mfc.getReport();
        assertEquals(myTestValue, "BlahBlah");
    }
}

Тест не пройден.

1 Ответ

1 голос
/ 09 апреля 2019

Проблема в том, что в тесте есть небольшая ошибка: намерение состоит в том, чтобы передать два аргумента: параметр "-rc" и его параметр параметра "BlahBlah", но на самом деле тест делает передачу один аргумент "-rc BlahBlah" со встроенным пробелом.

Picocli не сможет сопоставить эти входные данные и выдаст исключение (возможно, в сообщении об ошибке указано что-то вроде «unknown option -rc BlahBlah», но я сейчас далеко от своего компьютера, поэтому не могу проверить).

Решение состоит в том, чтобы изменить тест на следующее:

String[] args = "-rc BlahBlah".split(" ");

или на это:

String[] args = new String[] {"-rc", "BlahBlah"};

Эта ошибка в тесте на самом деле является довольно распространенной ошибкой.и я сделал эту ошибку сам несколько раз.: -)

В качестве примечания: вы можете использовать функцию трассировки picocli , чтобы помочь с такими проблемами, как эта, установив системное свойство -Dpicocli.trace=DEBUG.

...