Junit Assert & AssertEquals с пример

Какво е Junit Assert?

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

Има различни видове твърдения като Boolean, Null, Identical и др.

Junit предоставя клас, наречен Assert, който предоставя набор от методи за твърдения, полезни при писане на тестови случаи и за откриване на неуспешен тест

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

JUnit Методи за утвърждаване

Булева

Ако искате да тествате булевите условия (истина или невярно), можете да използвате следните assert методи

  1. assertTrue (условие)
  2. assertFalse(условие)

Тук условието е булева стойност.

Нулев обект

Ако искате да проверите първоначалната стойност на обект/променлива, имате следните методи:

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

Ето обекта Java обект напр assertNull(действително);

Идентичен

Ако искате да проверите дали обектите са идентични (т.е. сравняване на две препратки към един и същ Java обект), или различни.

  1. assertSame(очаквано, действително), Ще се върне true if очаквано == действително
  2. assertNotSame(очаквано, действително)

Утвърждаване на равно

Ако искате да тествате равенството на два обекта, имате следните методи

  • assertEquals(очаквано, действително)

Ще върне true, ако: очаквано.равно (действително) връща true.

Утвърдете, че масивът е равен

Ако искате да тествате равенството на масивите, имате следните методи, както е дадено по-долу:

  • assertArrayEquals(очаквано, действително)

Горният метод трябва да се използва, ако масивите имат еднаква дължина за всяка валидна стойност за i, можете да го проверите, както е дадено по-долу:

  • assertEquals(очаквано[i],действително[i])
  • assertArrayEquals(очаквано[i],действително[i])

Съобщение за грешка

Ако искате да хвърлите някаква грешка в твърдението, вие сте го направили провал() което винаги води до неуспешна присъда.

  • Неуспешно (съобщение);

Можете да имате метод на твърдение с допълнителен Низ параметър като първи параметър. Този низ ще бъде добавен в съобщението за грешка, ако твърдението е неуспешно. напр неуспешно (съобщение) може да се запише като

  • assertEquals(съобщение, очаквано, действително)

JUnit assertEquals

Имате assertEquals(a,b) която разчита на равно на () метод на класа Object.

  • Тук ще бъде оценено като a.equals (b).
  • Тук тестваният клас се използва за определяне на подходящо отношение на равенство.
  • Ако даден клас не отменя равно на () метод на Обект клас, той ще получи поведението по подразбиране на равно на () метод, т.е. идентичност на обекта.

If a намлява b са примитиви като напр байт, Int, булеваи т.н. тогава ще бъде направено следното за assertEquals(a,b):

a намлява b ще бъдат преобразувани в техния еквивалентен тип обвиващ обект (Байт, цяло число, Булеваи т.н.), а след това a.equals (b) ще бъдат оценени.

Например: Помислете за посочените по-долу низове с еднакви стойности, нека го тестваме с помощта на assertTrue

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

Горният израз assert ще върне true, тъй като obj1.equals(obj2) връща true.

Твърдения с плаваща запетая

Когато искате да сравните типове с плаваща запетая (напр удвои or поплавък), имате нужда от допълнителен задължителен параметър делта за да избегнете проблеми с грешки при закръгляване, докато правите сравнения с плаваща запетая.

Твърдението се оценява, както е дадено по-долу:

  • Math.abs(очаквано – действително) <= делта

Например:

assertEquals(aDoubleСтойност, другоDoubleСтойност, 0.001 )

JUnit Пример за утвърждаване

Примерът по-долу демонстрира как да отстоявате условие, използвайки JUnit методи за утвърждаване.

Нека създадем прост тестов клас с име Junit4AssertionTest.java и клас тест бегач TestRunner.java.

Ще създадете няколко променливи и важни твърдения за твърдения в JUnit.

В този пример ще изпълните нашия тестов клас с помощта на TestRunner.java

Стъпка 1) Нека създадем клас, покриващ всички важни методи на assert statement в 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) Нека анализираме очаквания резултат стъпка по стъпка:

Разгледайте всички твърдения едно по едно:

  1. assertEquals(низ1,низ2);

Сега сравнете string1=”Junit” с string2=”Junit” с метод равен на обектен клас. Замяна на метода assertEquals от метода java.lang.Object.equals():

string1.equals(string2)=> връща true

Така assertEquals(string1,string2) ще се върне вярно.

  1. assertSame(низ3, низ4);

Функционалността „assertSame()“ е да провери дали двата обекта се отнасят за един и същ обект.

Тъй като string3=”test” и string4=”test” означава, че и string3, и string4 са от един и същи тип, така че assertSame(string3, string4) ще върне вярно.

  1. assertNotSame(низ1, низ3);

Функционалността „assertNotSame()“ е да провери дали двата обекта не се отнасят за един и същи обект.

Тъй като string1=”Junit” и string3=”test” означава, че и string1, и string3 са от различни типове, така че assertNotSame(string1, string3) ще върне вярно.

  1. assertNotNull(низ1);

Функционалността „assertNotNull()“ е да провери дали даден обект не е нулев.

Тъй като string1= „Junit“, което не е нулева стойност, така assertNotNull(string1) ще върне вярно.

  1. assertNull(низ5);

Функционалността „assertNull()“ е да провери дали даден обект е нулев.

Тъй като string5= null, което е нулева стойност, така assertNull(string5) ще върне вярно.

  1. assertTrue(променлива1

Функционалността „assertTrue()“ е да провери дали дадено условие е вярно.

Тъй като променлива1=1 и променлива2=2, което показва тази променлива1 вярно.

  1. assertArrayEquals(airethematicArrary1, airethematicArrary2);

Функцията „assertArrayEquals()“ е да провери дали очакваният масив и полученият масив са равни. Типът на масива може да бъде int, long, short, char, byte или java.lang.Object.

Тъй като airethematicArrary1 = { 1, 2, 3 } и airethematicArrary2 = { 1, 2, 3 }, което показва, че и двата масива са равни, така че assertArrayEquals(airethematicArrary1, airethematicArrary2) ще върне вярно

Тъй като всичките седем твърдят твърдения на Junit4AssertionTest.java клас връща true, следователно, когато изпълните тестовия клас assert, той ще върне успешен тест. (вижте резултата по-долу)

Стъпка 4) Щракнете с десния бутон върху Junit4AssertionTest.java и щракнете върху runAs->JUnit. Ще видите резултата, както е даден по-долу:

JUnit Пример за утвърждаване

Горният резултат показва успешен резултат от теста, както се очаква.

Oбобщение

В този урок научихте всички важни видове методи за утвърждаване, предоставени от JUnit. Освен това видяхте примерите за твърдения за твърдения. Което показва, че ако всички оператори assert върнат true, тогава GUI на теста ще върне верен резултат и ако единичният тест е неуспешен, ще върне неуспешен резултат.

Обобщете тази публикация с: