Как проверить несколько входов для функции? - PullRequest
1 голос
/ 25 мая 2019

У меня есть класс "Validator", который позволяет нам устанавливать значения переменных-членов (в основном, логических) - mv1, mv2, mv3 и т. Д. С помощью методов установки.Давайте назовем все эти переменные «настройками».Все методы установки возвращают этот валидатор вместо обычного void.Validator настраивается, а затем используется методами автоматического тестирования для проверки тела ответа json / string на вызов API, выполненный в методе test.

В Validator есть метод validate (Input input), который принимает «Input»msgstr "объект (на самом деле ответ API) и проверяет его на основании значений настроек Validator.Есть некоторые зависимости между различными настройками.Например, если mv1 = true, то mv3 не может быть истинным и т. Д. Кроме того, я не всегда могу использовать перечисления для ограничения значений параметров!

Я проверяю все параметры с помощью validateSettings ().Параметр validate (Input input) вызывает его перед выполнением проверки.Я хочу выяснить все недействительные входные данные, отобразить их все сразу, а затем предотвратить проверку, пока входные данные не будут зафиксированы. Каков наилучший способ сделать это в Java?

Что я попробовал?

Использование простой Java -
Я использовалстрока для хранения всех недопустимых настроек и причин, по которым они недействительны.Затем сгенерируйте исключение IllegalArgumentException, если один или несколько параметров были признаны недействительными, и передайте ему строку.Я хочу избежать написания собственного кода, если это возможно.Я также не хочу использовать Java assert, потому что его можно отключить во время выполнения.

Использование библиотеки TestNg-
Я использую SoftAssert для проверки переменных-членов.Код проверяет некоторые переменные-члены, утверждает, что переменные имеют допустимые значения и, наконец, выполняет softAssert.assertAll (), чтобы вывести все неправильные значения за один раз.Но мне интересно, есть ли в Java встроенные функции для этого.

class Validator {

    // Validator settings
    boolean mv1;
    boolean mv2;
    boolean mv3;
    boolean mv4;
    boolean mv5;
    //MyEnum mv6;//...etc.

    // Setters - One example.
    public Validator setMv1(boolean mv1) {
        this.mv1 = mv1;
        return this;
    }

    // Validation logic
    public void validate(Input input) {
        validateSettings();
        // Now, validate the input.
    }

    // Validate the settings of this Validator - using TestNg library
    private void validateSettings() {
        SoftAssert assertz = new SoftAssert();
        // No need to validate all settings ! Only some needed.
        if (mv1 == true) {
            assertz.assertFalse(mv3, "Meaningful error message");
            assertz.assertTrue(mv5, "Meaningful error message");
        }
        // Assert other things.
        assertz.assertAll();
    }

    // Validate the settings of this Validator - using plain Java.
    private void validateSettingsV1() {
        String errors = "These are the invalid settings - ";
        boolean areSettingsInvalid = false;
        if (mv1 == true) {
            if (mv3 == true) {
                errors += "mv3 can't be true when...blah";
                areSettingsInvalid = true;
            }
            if (mv5 == false) {
                errors += "mv5 can't be false when...blah";
                areSettingsInvalid = true;
            }

            // Repeat above logic for all invalid settings.

            if (areSettingsInvalid == true) {
                throw new IllegalArgumentException(errors);
            }

        }

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...