TestNG - Как избежать ошибки checkstyle, когда количество параметров превышает 7?

Когда количество аргументов метода превышает 7, будет выдана ошибка стиля проверки (т. Е. Более 7 параметров (найдено 8). [ParameterNumber]). Следовательно, для нижеприведенного метода он также является броском. Как правило, ошибки стиля проверки можно избежать, используя массив строк или хэш-карту.

Но как избежать здесь аргументов метода с аннотацией @Optional?

@Parameters({ "test1", "test2", "test3", "test4", "test5", "test6", "test7", "test8" })
@BeforeTest
public void beforeTest(@Optional("value1") String test1, @Optional("value2") String test2, @Optional("value3") String test3, @Optional("value4") String test4, @Optional("value5") String test5, @Optional("value6") String test6, @Optional("value7") String test7, @Optional("value8") String test8) {
    ....
}

Один из способов – увеличить лимит параметров в файле checkstyle.xml.

Но, ищите, есть ли лучшее решение.


person Sandeep Nalla    schedule 16.12.2019    source источник
comment
Прежде всего, не рекомендуется использовать слишком много параметров в одном методе. См. rules.sonarsource.com/java/RSPEC-3553, также вы можете использовать конструктор шаблон - stackoverflow.com/questions/4272756/,   -  person TechFree    schedule 16.12.2019
comment
Как подобрать шаблон построителя для testng? Пример пожалуйста..   -  person Sandeep Nalla    schedule 17.12.2019


Ответы (3)


Ваш выбор:

1) Отключить проверку и не проверять количество параметров в методах.

2) Увеличить max для проверки, что позволит вам иметь все методы с новым лимитом.

3) Подавить нарушение с помощью фильтра для этого одного места. https://checkstyle.org/config_filters.html . Если вы хотите настроить таргетинг на методы, использующие Optional, я бы попробовал использовать https://checkstyle.org/config_filters.html#SuppressionXpathFilter .

person rveach    schedule 16.12.2019
comment
Есть ли способ, похожий на шаблон построителя, для уменьшения количества аргументов, который работает для TestNG? - person Sandeep Nalla; 17.12.2019

Вы можете создать класс-оболочку, который содержит ваши параметры.

Класс обертки:

public class ParameterObject {
    private String test1;
    private String test2;
    private String test3;
    private String test4;
    private String test5;
    private String test6;
    private String test7;
    private String test8;

    public ParameterObject() {
       super();
    }

    public void setTest1(String test1) {
        this.test1 = test1;
    }

    public String getTest1() {
        return test1;
    }

    //add more getter and setter.
}

Метод испытания:

public void beforeTest(ParameterObject parameters) {
    //access parameters with:
    parameters.getTest1();
    //...
}

Вы также можете использовать шаблон построителя с этим классом-оболочкой.

person AndiCover    schedule 17.12.2019
comment
Как насчет необязательных значений аннотаций и параметров аннотаций? - person Sandeep Nalla; 17.12.2019

Вы можете использовать varargs. Это позволяет указать массив в качестве параметра, не включая ни одного.

person fernal73    schedule 22.12.2019
comment
Как это возможно сделать, не избегая использования аннотации @Optional? - person Sandeep Nalla; 31.12.2019
comment
Я пропустил эту часть вашего вопроса. Во всяком случае, не знаком с TestNg. - person fernal73; 31.12.2019