Запуск Junit завершился неудачно

Я столкнулся с другой проблемой. В моем проекте есть 5 тестовых классов (junit), и все они способны к параметризованному тестированию. Я могу индивидуально протестировать эти классы с помощью eclipse, в то время как он отлично работает. Когда я запускаю их через maven (верный огонь), они потерпели неудачу. Сообщение об ошибке выглядит так: org.junit.runners.Parameterized.parametersMethodReturnedWrongType(Parameterized.java:340). Пожалуйста помоги.

фрагмент кода:

@Parameters
    public static List<Browser> getBrowserDetails() {
        ConfigReader reader = new ConfigReader();
        return reader.getParameter(ProjectTest.class.getCanonicalName());
    }

трассировки стека:

java.lang.Exception: com.sun.pinna.tests.ProjectTest.getBrowserDetails() must return an Iterable of arrays.
    at org.junit.runners.Parameterized.parametersMethodReturnedWrongType(Parameterized.java:340)
    at org.junit.runners.Parameterized.allParameters(Parameterized.java:286)
    at org.junit.runners.Parameterized.<init>(Parameterized.java:248)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104)
    at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86)
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
    at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
    at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33)
    at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:250)
    at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
    at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)

person Anoop M Nair    schedule 05.06.2015    source источник
comment
не могли бы вы опубликовать трассировку стека и соответствующий метод сообщения об ошибке   -  person shillner    schedule 05.06.2015
comment
Фрагмент кода и трассировка стека предоставлены   -  person Anoop M Nair    schedule 05.06.2015
comment
Я ожидал бы чего-то подобного, если бы reader.getParameter() возвращал значение null. Я не думаю, что это хороший дизайн, чтобы изменить то, что для модульного тестирования в зависимости от внешнего файла - должно ли оно работать или не должно? И чтение конфигурации, вероятно, должно иметь собственный модульный тест, чтобы сказать вам, работает ли он.   -  person Deltharis    schedule 05.06.2015
comment
Здесь в файле конфигурации настраиваются только сведения о браузере, поддерживающем селен.   -  person Anoop M Nair    schedule 05.06.2015
comment
Можете ли вы подтвердить, что он возвращает при запуске с Surfire? Это действительно может быть нуль (из-за проблем с классами или чего-то еще) и даст этот результат.   -  person Deltharis    schedule 05.06.2015
comment
Спасибо Deltharis, проблема заключалась в том, что configReader считывал нулевое значение.   -  person Anoop M Nair    schedule 10.06.2015


Ответы (1)


ProjectTest.getBrowserDetails() must return an Iterable of arrays

У вас есть причина прямо здесь. Список, возвращаемый вашим методом, содержит не массивы, а Browserобъекты.

До JUnit 4.11 правильной подписью метода будет:

public static List<Browser[]> getBrowserDetails() 
person Steven Pessall    schedule 05.06.2015
comment
В junit 4.12 он поддерживает коллекции в качестве параметров. Индивидуально я могу запускать эти тестовые классы с помощью моей IDE, в то время ошибок не было. - person Anoop M Nair; 05.06.2015
comment
Есть ли вероятность того, что плагин Fire Fire использует какую-либо зависимость junit ‹4.12? - person Anoop M Nair; 05.06.2015
comment
Если вы используете eclipse, вы можете открыть pom.xml и проверить вкладку Dependency Hierarchy. Там вы можете увидеть, какую версию JUnit maven использует. - person Steven Pessall; 05.06.2015
comment
Вы должны объявить зависимость junit:junit:4.12 в вашем pom.xml. Плагин Surefire использует версию, которую вы объявляете. - person Stefan Birkner; 05.06.2015