JUnit Przypadki testowe @Before @BeforeClass Adnotacja

JUnit jest najpopularniejszą jednostką Testowanie ramy w Java. Jest to wyraźnie zalecane Testów jednostkowych. JUnit nie wymaga serwera do testowania aplikacji webowej, co przyspiesza proces testowania.

JUnit Framework umożliwia także szybkie i łatwe generowanie przypadków testowych i danych testowych. The org.Junit pakiet składa się z wielu interfejsów i klas dla JUnit Testowanie, takie jak test, potwierdzenie, po, przed itp.

Co to jest urządzenie testowe

Zanim zrozumiemy, czym jest urządzenie testowe, przeanalizujmy poniższy kod

Ten kod został zaprojektowany do wykonania dwóch przypadków testowych na prostym pliku.

public class OutputFileTest {
    private File output; 
    output = new File(...);
    output.delete(); 
public void testFile1(){
        //Code to verify Test Case 1
}
    output.delete();
    output = new File(...);
public void testFile2(){
        //Code to verify Test Case 2
}
 output.delete(); 
}

Niewiele jest tutaj kwestii

  • Kod jest nieczytelny
  • Kod nie jest łatwy w utrzymaniu.
  • Jeśli zestaw testów jest złożony, kod może zawierać problemy logiczne.

Porównaj ten sam kod za pomocą JUnit

public class OutputFileTest		
{
    private File output; 
    @Before public void createOutputFile() 
    { 
       output = new File(...);
    }
  
	@After public void deleteOutputFile() 
    {
        output.delete(); 
    } 
     
    @Test public void testFile1() 
    {
       // code for test case objective
    } 
	@Test public void testFile2() 
    {
       // code for test case objective
    }
}

Kod jest o wiele bardziej czytelny i łatwiejszy w utrzymaniu. Powyższa struktura kodu jest Urządzenie testowe.

Urządzenie testowe to kontekst, w którym a JUnit Przypadek testowy biegnie. Zazwyczaj urządzenia testowe obejmują:

  • Obiekty lub zasoby dostępne dla dowolnego przypadku testowego.
  • Wymagane działania, które udostępniają te obiekty/zasoby.
  • Te czynności są
    1. alokacja (ustawienie)
    2. dealokacja (porzuca).

Konfiguracja i demontaż

  • Zwykle przed każdym przypadkiem testowym należy wykonać pewne powtarzające się zadania. Przykład: utwórz połączenie z bazą danych.
  • Podobnie na końcu każdego przypadku testowego mogą pojawić się pewne powtarzające się zadania. Przykład: do oczyszczenia po zakończeniu wykonywania testu.
  • JUnit zawiera adnotacje pomocne w konfiguracji i demontażu. Zapewnia zwolnienie zasobów, a system testowy jest w stanie gotowości do następnego przypadku testowego.

Te JUnit adnotacje omówiono poniżej-

ustawienie

@Zanim adnotacja w JUnit jest używany w metodzie zawierającej Java kod do uruchomienia przed każdym przypadkiem testowym. tzn. działa przed każdym wykonaniem testu.

Rozbiórka (niezależnie od wyroku)

@Po adnotacja jest używana w metodzie zawierającej kod Java do uruchomienia po każdym przypadku testowym. Metody te zostaną uruchomione nawet, jeśli w przypadku testowym zostaną zgłoszone wyjątki lub w przypadku niepowodzenia asercji.

Uwaga:

  • Dopuszcza się dowolną liczbę adnotacji wymienionych powyżej.
  • Wszystkie metody z adnotacją @Zanim in JUnit będą uruchamiane przed każdym przypadkiem testowym, ale mogą być uruchamiane w dowolnej kolejności.
  • Metody @Before i @After można dziedziczyć z superklasy. Wykonanie wygląda następująco: Jest to standardowy proces wykonywania w JUnit.
  1. Wykonaj JUnit @Przed metodami w nadklasie
  2. Wykonaj metody @Before w tej klasie
  3. Wykonaj metodę @Test w tej klasie
  4. Wykonaj metody @After w tej klasie
  5. Wykonaj metody @After w nadklasie

Przykład: Tworzenie klasy z plikiem jako elementem testowym

public class OutputFileTest		
{
    private File output; 
    @Before	public void createOutputFile() 
    { 
       output = new File(...);
    }
  
	@After public void deleteOutputFile() 
    {
        output.delete(); 
    } 
     
    @Test public void testFile1() 
    {
       // code for test case objective
    } 
	@Test public void testFile2() 
    {
       // code for test case objective
    }
}

W powyższym przykładzie łańcuch wykonania będzie następujący:

Konfiguracja i demontaż

  1. utwórz plik wyjściowy()
  2. plik testowy1()
  3. usuń plik wyjściowy()
  4. utwórz plik wyjściowy()
  5. plik testowy2()
  6. usuń plik wyjściowy()

Założenie:

testFile1() działa przed testFile2() – co nie jest gwarantowane.

Konfiguracja jednorazowa

  • Możliwe jest uruchomienie metody tylko raz dla całej klasy testów przed wykonaniem któregokolwiek z testów i przed jakimkolwiek innym @Zanim metoda(-y).
  • „Jednorazowa konfiguracja” jest przydatna do uruchamiania serwerów, otwierania komunikacji itp. Zamykanie i ponowne otwieranie zasobów dla każdego testu jest czasochłonne.
  • Można to zrobić za pomocą adnotacji @Przed zajęciami in JUnit.
@BeforeClass public static void Method_Name() {	
    // class setup code here	
 }	

Jednorazowe zburzenie

  • Podobnie jak w przypadku jednorazowej konfiguracji, dostępna jest również jednorazowa metoda czyszczenia. Działa po wszystkich metodach przypadków testowych i @Po adnotacje zostały wykonane.
  • Przydaje się do zatrzymywania serwerów, zamykania łączy komunikacyjnych itp.
  • Można to zrobić za pomocą @Po zajęciach adnotacja
 @AfterClass public static void Method_Name()	
 {	
    // class cleanup code here	
 }	

JUnit Zestawy testowe

Jeśli chcemy wykonać wiele testów w określonej kolejności, możemy to zrobić, łącząc wszystkie testy w jednym miejscu. To miejsce nazywa się zestawami testów. Więcej szczegółów na temat wykonywania zestawów testów i sposobu ich używania w JUnit zostaną w tym omówione Tutorial.

Junit Test Runner

JUnit udostępnia narzędzie do wykonywania przypadków testowych.

  • JUnitrdzeń klasa służy do wykonywania tych testów.
  • Metoda tzw uruchomKlasy przez org.junit.runner.JUnitRdzeń, służy do uruchomienia jednej lub kilku klas testowych.
  • Typ zwracany przez tę metodę to Wynik obiekt (org.junit.runner.Wynik), który służy do uzyskiwania dostępu do informacji o testach. Zobacz poniższy przykład kodu, aby uzyskać więcej informacji.
public class Test {				
			public static void main(String[] args) {									
       		Result result = JUnitCore.runClasses(CreateAndSetName.class);					
			for (Failure failure : result.getFailures()) {							
         		System.out.println(failure.toString());					
      }		
      System.out.println(result.wasSuccessful());					
   }		
}      

W powyższym kodzie obiekt „wynik” jest przetwarzany w celu uzyskania niepowodzeń i pomyślnych wyników wykonywanych przypadków testowych.

Imię JUnit program

Dobra znajomość SDLC, programowania w Javie i podstaw Testowanie oprogramowania proces pomaga w zrozumieniu JUnit program.

Przyjrzyjmy się testowaniu jednostkowemu na żywym przykładzie. Musimy utworzyć klasę testową z metodą testową opisaną adnotacją @Test jak podano poniżej:

MojaFirstClassTest.java

package guru99.JUnit;		

import static org.JUnit.Assert.*;				

import org.JUnit.Test;		

public class MyFirstClassTest {				

    @Test		
    public void myFirstMethod(){					
        String str= "JUnit is working fine";					
        assertEquals("JUnit is working fine",str);					
    }
}		

TestRunner.java

Aby wykonać naszą metodę testową (powyżej), musimy utworzyć program uruchamiający test. W programie uruchamiającym testy musimy dodać klasę testową jako parametr w JUnitMetoda runclasses() Core. Zwróci wynik testu w zależności od tego, czy test został zaliczony, czy nie.

Więcej szczegółów znajdziesz w poniższym kodzie:

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(MyFirstClassTest.class);					
			for (Failure failure : result.getFailures()) {							
              System.out.println(failure.toString());					
      }		
      System.out.println("Result=="+result.wasSuccessful());							
   }		
}      	

Wydajność

Pewnego razu TestRunner.java wykonuje nasze metody testowe, otrzymujemy wynik niepowodzenia lub zaliczenia. Poniżej znajdziesz wyjaśnienie danych wyjściowych:

  1. W tym przykładzie po wykonaniu MojaFirstClassTest.java , test został zaliczony, a wynik jest zielony.
  2. Jeżeli by się to nie powiodło, wynik powinien być pokazany na czerwono, a awarię można zaobserwować w śladzie awarii. Zobacz poniżej JUnit interfejs użytkownika:

JUnit Wyjście programu

Podsumowanie

  • JUnit to framework obsługujący kilka adnotacji identyfikujących metodę zawierającą test.
  • JUnit zawiera adnotację tzw @Test, który opowiada JUnit że publiczna metoda void, w której jest używana, może działać jako przypadek testowy.
  • Urządzenie testowe to kontekst, w którym uruchamiany jest przypadek testowy
  • Aby wykonać wiele testów w określonej kolejności, można to zrobić łącząc wszystkie testy w jednym miejscu. To miejsce nazywa się apartamentami testowymi.
  • JUnit udostępnia narzędzie do wykonywania testów, w którym możemy uruchamiać nasze przypadki testowe, zwane Test Runnerem.