Учебники

5) Джунит Assert

Что такое Junit Assert?

Assert — это метод, полезный при определении статуса Pass или Fail тестового примера. Методы assert предоставляются классом org.junit.Assert, который расширяет класс java.lang.Object.

Существуют различные типы утверждений, такие как логические, нулевые, идентичные и т. Д.

Junit предоставляет класс с именем Assert, который предоставляет набор методов утверждений, полезных при написании тестовых случаев и для обнаружения неудачных тестов.

Методы assert предоставляются классом org.junit.Assert, который расширяет класс java.lang.Object .

В этом уроке вы узнаете

Методы JUnit Assert

логический

Если вы хотите проверить логические условия (true или false), вы можете использовать следующие методы assert

  1. assertTrue (состояние)
  2. assertFalse (состояние)

Здесь условие является логическим значением.

Нулевой объект

Если вы хотите проверить начальное значение объекта / переменной, у вас есть следующие методы:

  1. assertNull (объект)
  2. assertNotNull (объект)

Здесь объект является Java- объектом, например, assertNull (фактический);

идентичный

Если вы хотите проверить, идентичны ли объекты (т. Е. Сравнивают две ссылки на один и тот же объект Java) или разные.

  1. assertSame (ожидаемый, фактический), он вернет true, если ожидается == фактический
  2. assertNotSame (ожидаемый, фактический)

Утвердить равными

Если вы хотите проверить равенство двух объектов, у вас есть следующие методы

  • assertEquals (ожидается, актуально)

Он вернет истину, если: Ожидается .

Assert Array Equals

Если вы хотите проверить равенство массивов, у вас есть следующие методы, как указано ниже:

  • assertArrayEquals (ожидается, актуально)

Вышеупомянутый метод должен использоваться, если массивы имеют одинаковую длину, для каждого действительного значения для i вы можете проверить его, как указано ниже:

  • assertEquals (ожидаемый [I], фактическая [I])
  • assertArrayEquals (ожидаемый [I], фактическая [I])

Сообщение об ошибке

Если вы хотите выбросить какую-либо ошибку подтверждения, у вас есть fail (), которая всегда приводит к отказу.

  • Сбой (сообщение);

Вы можете использовать метод утверждения с дополнительным параметром String в качестве первого параметра. Эта строка будет добавлена ​​в сообщение об ошибке, если утверждение не выполнено. Например, ошибка (сообщение) может быть записана как

  • assertEquals (сообщение, ожидаемый, фактический)

JUnit assertEquals

У вас есть assertEquals (a, b), который опирается на метод equals () класса Object.

  • Здесь это будет оценено как a.equals (b).
  • Здесь тестируемый класс используется для определения подходящего отношения равенства.
  • Если класс не отменяет Equals () метод объект класса, то получите поведение по умолчанию равно () метод, т.е. идентичность объекта.

Если a и b являются примитивами, такими как byte , int , boolean и т. Д., То для assertEquals (a, b) будет сделано следующее:

a и b будут преобразованы в их эквивалентный тип объекта-обертки ( Byte, Integer , Boolean и т. д.), а затем будет выполнен анализ a.equals (b) .

Например: рассмотрим нижеприведенные строки, имеющие одинаковые значения, давайте проверим это с помощью assertTrue

String obj1="Junit";
String obj2="Junit";
assertEquals(obj1,obj2);

Выше оператор assert вернет true, так как obj1.equals (obj2) возвращает true.

Утверждения с плавающей точкой

Если вы хотите сравнить типы с плавающей запятой (например, double или float ), вам нужен дополнительный обязательный параметр delta, чтобы избежать проблем с ошибками округления при выполнении сравнений с плавающей запятой.

Утверждение оценивается как указано ниже:

  • Math.abs (ожидается — факт) <= delta

Например:

assertEquals (aDoubleValue, anotherDoubleValue, 0,001)

Пример JUnit Assert

Ниже пример демонстрирует, как утверждать условие, используя методы JUnit assert.

Давайте создадим простой тестовый класс с именем Junit4AssertionTest.java и класс тестового бегуна TestRunner.java .

Вы создадите несколько переменных и важных утверждений assert в JUnit.

В этом примере вы выполните наш тестовый класс, используя TestRunner.java

Шаг 1) Давайте создадим класс, охватывающий все важные методы операторов assert в junit:

Junit4AssertionTest.java

package guru99.junit;		

import static org.junit.Assert.*;				
import org.junit.Test;		


public class Junit4AssertionTest {				

    @Test		
    public void testAssert(){					
        		
        //Variable declaration		
        String string1="Junit";					
        String string2="Junit";					
        String string3="test";					
        String string4="test";					
        String string5=null;					
        int variable1=1;					
        int	variable2=2;					
        int[] airethematicArrary1 = { 1, 2, 3 };					
        int[] airethematicArrary2 = { 1, 2, 3 };					
        		
        //Assert statements		
        assertEquals(string1,string2);					
        assertSame(string3, string4);					
        assertNotSame(string1, string3);					
        assertNotNull(string1);			
        assertNull(string5);			
        assertTrue(variable1<variable2);					
        assertArrayEquals(airethematicArrary1, airethematicArrary2);					
    }		
}		

Шаг 2) Вам нужно создать класс бегуна для выполнения вышеупомянутого класса:

TestRunner.java

package guru99.junit;		

import org.junit.runner.JUnitCore;		
import org.junit.runner.Result;		
import org.junit.runner.notification.Failure;		

public class TestRunner {				
			public static void main(String[] args) {									
      Result result = JUnitCore.runClasses(Junit4AssertionTest.class);					
			for (Failure failure : result.getFailures()) {							
         System.out.println(failure.toString());					
      }		
      System.out.println("Result=="+result.wasSuccessful());							
   }		
}      

Шаг 3) Давайте шаг за шагом проанализируем ожидаемый результат:

Рассмотрим все утверждения assert одно за другим:

  1. assertEquals (STRING1, строка2);

Теперь сравните string1 = «Junit» с string2 = «Junit» с методом equals объекта класса. Замена метода assertEquals из метода java.lang.Object.equals ():

string1.equals (string2) => возвращает true

Поэтому assertEquals (string1, string2) вернет true .

  1. assertSame (string3, string4);

Функциональность «assertSame ()» заключается в проверке того, что два объекта ссылаются на один и тот же объект.

Поскольку string3 = «test» и string4 = «test» означает, что как string3, так и string4 относятся к одному типу, поэтому assertSame (string3, string4) вернет true .

  1. assertNotSame (строка1, строка3);

Функция «assertNotSame ()» заключается в проверке того, что два объекта не ссылаются на один и тот же объект.

Поскольку string1 = «Junit» и string3 = «test» означает, что и string1, и string3 относятся к разным типам, поэтому assertNotSame (string1, string3) вернет true .

  1. assertNotNull (строка1);

Функциональность «assertNotNull ()» заключается в проверке того, что объект не является нулевым.

Так как string1 = «Junit», которое является ненулевым значением, assertNotNull (string1) вернет true .

  1. assertNull (string5);

Функциональность «assertNull ()» заключается в проверке того, что объект является нулевым.

Поскольку string5 = null, что является нулевым значением, assertNull (string5) вернет true .

  1. assertTrue (переменная1 <переменная2);

Функциональность «assertTrue ()» заключается в проверке истинности условия.

Поскольку variable1 = 1 и variable2 = 2, это показывает, что условие variable1 <variable2 имеет значение true, поэтому assertTrue (variable1 <variable2) вернет значение true .

  1. assertArrayEquals (airethematicArrary1, airethematicArrary2);

Функциональность «assertArrayEquals ()» заключается в проверке того, что ожидаемый массив и полученный массив равны. Тип массива может быть int, long, short, char, byte или java.lang.Object.

Поскольку airethematicArrary1 = {1, 2, 3} и airethematicArrary2 = {1, 2, 3}, который показывает, что оба массива равны, assertArrayEquals (airethematicArrary1, airethematicArrary2) вернет true

Поскольку все семь операторов assert класса Junit4AssertionTest.java возвращают значение true, поэтому при выполнении тестового класса assert он вернет успешный тест. (см. вывод ниже)

Шаг 4) Щелкните правой кнопкой мыши на Junit4AssertionTest.java и выберите runAs-> JUnit. Вы увидите вывод, как показано ниже:

Junit Assert

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

Резюме:

В этом руководстве вы изучили все важные типы методов утверждений, предоставляемых JUnit. Также вы видели примеры утверждений assert. Это показывает, что если все операторы assert возвращают значение true, то графический интерфейс пользователя теста вернет истинный результат, а в случае сбоя одного теста он вернет ошибочный результат.