3

当方法的参数数量超过 7 个时,会抛出 checkstyle 错误(即,超过 7 个参数(找到 8 个)。[ParameterNumber])。因此,对于下面的方法,它也在抛出。一般来说,使用String数组或Hashmap可以避免checkstyle错误。

但是,如何避免这里成为具有 @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 中的参数限制。

但是,寻找是否有更好的解决方案。

4

3 回答 3

1

您的选择是:

1)禁用检查并且不验证方法中的参数数量。

2)增加max检查,从而使您可以使用新限制的所有方法。

3) 使用针对这一位置的过滤器来抑制违规。https://checkstyle.org/config_filters.html。如果您想针对使用的方法Optional,那么我会尝试使用https://checkstyle.org/config_filters.html#SuppressionXpathFilter

于 2019-12-16T22:22:10.040 回答
0

您可以创建一个包含参数的包装类。

包装类:

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();
    //...
}

您还可以将构建器模式与此包装器类一起使用。

于 2019-12-17T07:57:47.143 回答
0

你可以使用可变参数。这允许您指定一个数组作为参数,包括无。

于 2019-12-22T23:39:10.567 回答