Класс утверждений JUnit содержит набор статических методов, позволяющих проводить модульные тесты. Утверждения — одна из основных функций JUnit. Этот класс имеет более пятидесяти разнообразных методов. Некоторые тесты класса Assertions не пройдут, если условие истинно, а другие не пройдут, если условие ложно.
Класс Assertions также имеет много перегруженных методов. Каждый метод утверждения имеет как минимум два перегруженных метода. Откройте для себя некоторые из наиболее популярных методов класса Assertions и узнайте, как использовать их для выполнения модульных тестов.
Метод assertEquals
Метод assertEquals JUnit 5 имеет более десяти вариантов. Этот метод является одним из наиболее популярных методов класса Assertions. Один вариант метода assertEquals принимает ожидаемое значение и функцию, которую вы хотите оценить (фактическое значение). Второй основной вариант принимает дополнительный третий аргумент. Это сообщение об ошибке, которое будет отображаться, если Модульный тест JUnit терпит неудачу.
Перегрузка метода assertEquals происходит с разными типами данных. Некоторые методы перегрузки assertEquals принимают четвертый аргумент, называемый delta. В других версиях строка отказа заменяется функциональным интерфейсом поставщика в виде лямбда-выражение.
Класс AssertionsMethods Java
упаковка ком.программа;
публичныйучебный классУтвержденияМетоды{
публичныйстатическийинтплощадь(инт число){
возвращаться число * число;
}
}
Приведенный выше Java-класс AssertionsMethods имеет единственный метод, который называется Square. Метод Square принимает целочисленное значение и возвращает его квадрат. Чтобы протестировать квадратный метод и любой будущий метод из класса AssertionsMethods, вам потребуется создать тестовый пример JUnit.
Тестовый пример AssertionsMethodsTest JUnit
упаковка ком.программа;
импортстатическийорганизация.junit.Утверждать.assertEquals;
импортстатическийорганизация.junit.Юпитер.апи.Утверждения.*;импорторганизация.junit.Юпитер.апи.Тест;
учебный классУтвержденияМетодыТест{
@Тест
пустотатестКвадрат(){
Утвердитьравно(25, Методы утверждения.площадь(5));
assertEquals (36, AssertionMethods.square (6), "Ваши квадратные значения не совпадают.");
assertEquals (49, AssertionMethods.square (7), () ->"Ваши квадратные значения не совпадают.");
}
}
Метод testSquare() использует три варианта assertEquals() для проверки метода Square(). Каждый assertEquals() является успешным, так как все ожидаемые значения совпадают с фактическими значениями, возвращаемыми методом Square().
Метод assertNull
Класс JUnit Assertions имеет ровно три метода assertNull. Каждый из этих методов принимает один или несколько аргументов и утверждает, является ли данный объект нулевым. Если данный объект не равен нулю, то тест не пройден.
@Тест
публичныйпустотаtestStringValue(){
Нить строковое значение = нулевой;
assertNull (строковое значение);
assertNull (строковое значение, "Ваше строковое значение не равно нулю");
assertNull (stringValue, () ->"Ваше строковое значение не равно нулю");
}
Первый метод assertNull() принимает строковый объект и проверяет, является ли он нулевым. Второй метод assertNull() принимает строковый объект и строковое сообщение, отображаемое в случае сбоя теста. Третий и последний метод assertNull() принимает объект, который вы хотите оценить, и функциональный интерфейс поставщика.
В приведенном выше тестовом примере интерфейс Supplier действует как цель назначения для лямбда-выражения. Лямбда-выражение генерирует сообщение об ошибке, если тест не пройден.
Метод assertTrue
Метод assertTrue() имеет шесть вариантов. Каждый метод утверждает, верно ли заданное условие. Если условие assertTrue() ложно, тест не пройден.
@Тест
пустотаtestEvenNumbers(){
инт число1 = 10;
инт число2 = 16;
инт число3 = 26;
assertTrue (число1 < число2);
assertTrue (число3 > число2, "Ваше условие не соответствует действительности.");
assertTrue (число1 < число3, () ->" Ваше условие не соответствует действительности.");
УтвердитьИстинно (() -> число1%2 == 0);
УтвердитьИстинно (() -> число2%2 == 0, "Ваше значение не является четным числом.");
УтвердитьИстинно (() -> число3%2 == 0, () ->"Ваше значение не является четным числом.");
}
Метод testEvenNumbers() демонстрирует, как использовать все шесть методов assertTrue(). Все приведенные выше методы верны, поэтому этот модульный тест выполняется без сбоев или ошибок.
- assertTrue (логическое условие): этот метод принимает логическое условие и утверждает, истинно ли оно. Пример этого метода в приведенном выше коде утверждает, что первое целочисленное значение меньше второго.
- assertTrue (логическое условие, строковое сообщение): этот метод принимает логическое условие для проверки и строку для отображения, если оно ложно.
- assertTrue (логическое условие, Поставщик
messageSupplier): этот метод принимает функциональный интерфейс Boolean и Supplier в виде лямбда-выражения. Поставщик сообщений содержит строку для отображения, если логическое условие ложно. - assertTrue (BooleanSupplier booleanSupplier): этот метод принимает функциональный интерфейс BooleanSupplier в форме лямбда-выражения, которое оценивается как true или false. В примере этого метода в коде используется лямбда-выражение. Он проверяет остаток от первого целого числа, деленного на два, чтобы определить, четное оно или нечетное.
- assertTrue (BooleanSupplier booleanSupplier, String message): этот метод принимает функциональный интерфейс BooleanSupplier в виде лямбда-выражения. Также требуется строковое сообщение для печати, если BooleanSupier не соответствует действительности.
- assertTrue (BooleanSupplier booleanSupplier, Поставщик
messageSupplier): этот метод принимает функциональный интерфейс BooleanSupplier для утверждения. Он также принимает функциональный интерфейс поставщика, который представляет собой лямбда-выражение, которое будет печатать строковое значение, если тест не пройден.
Метод assertFalse
Метод assertFalse() противоположен методу assertTrue(). Этот метод оценивает заданное условие, чтобы определить, является ли оно ложным. Если данное условие истинно, то проверка assertFalse() завершится ошибкой. Метод assertFalse() также имеет шесть вариантов, которые принимают те же аргументы, что и их аналоги assertTrue().
@Тест
пустотатестнотевеннуберс(){
инт число1 = 11;
инт число2 = 17;
инт число3 = 27;
assertFalse (число2 < число1);
assertFalse (число2 > номер3, " Ваше условие не является ложным.");
assertFalse (число3 < число1, () ->" Ваше условие не является ложным.");
Утвердить Ложь (() -> число1%2 == 0);
Утвердить Ложь (() -> число2%2 == 0, "Ваше значение является четным числом.");
Утвердить Ложь (() -> число3%2 == 0, () ->"Ваше значение является четным числом.");
}
Все шесть методов assertFalse() в методе testNotEvenNumbers() возвращают значение false, что означает, что тесты assertFalse() прошли успешно.
Преимущества модульного тестирования
Модульное тестирование является неотъемлемой частью процесса разработки программного обеспечения. Крупные программные проекты терпят неудачу по разным причинам, начиная от команд, которые над ними работают, и заканчивая подходами к разработке.
Целью модульного тестирования является устранение сбоев программного обеспечения за счет раннего обнаружения ошибок. Это требует от команд разработки четких спецификаций, улучшения дизайна программного обеспечения путем документирования ошибок и обеспечения поддержки в обслуживании программного обеспечения.
Модульное тестирование — это не единственный подход к тестированию программного обеспечения, который вы должны использовать в жизненном цикле разработки, это просто очень хорошая отправная точка.