TestNG-当参数数量超过7时如何避免checkstyle错误?

问题描述 投票:3回答: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中的参数限制。

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

java testng checkstyle testng-annotation-test
3个回答
0
投票

您的选择是:

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

2)增加max进行检查,从而使所有方法都具有新的限制。

3)使用此位置的过滤器抑制违规行为。 https://checkstyle.org/config_filters.html。如果要定位使用Optional的方法,那么我将尝试使用https://checkstyle.org/config_filters.html#SuppressionXpathFilter


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

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


0
投票

您可以使用varargs。这样就可以将数组指定为不包含任何参数的参数。

© www.soinside.com 2019 - 2024. All rights reserved.