ஜூனிட்டில் @முன் மற்றும் @பிறகு சிறுகுறிப்புகளை எவ்வாறு பயன்படுத்துவது

ஜூனிட்டில் @முன் மற்றும் @பிறகு சிறுகுறிப்புகளை எவ்வாறு பயன்படுத்துவது

யூனிட் டெஸ்ட் தொகுப்பை நீங்கள் எழுதும் போது, ​​நீங்கள் செய்ய வேண்டிய சோதனை தொடர்பான சில செயல்பாடுகள் இருக்கலாம். இந்த நடவடிக்கைகள் எந்த வடிவத்திலும் இருக்கலாம். நீங்கள் ஒரு தரவுத்தளத்துடன் இணைக்க வேண்டும் அல்லது ஒரு சோதனையைச் செய்வதற்கு முன் ஆதாரங்களைச் சேகரிக்க வேண்டும். ஒவ்வொரு சோதனை வழக்கும் செயல்படுத்தப்பட்ட பிறகு, நீங்கள் சில ஆதாரங்களை வெளியிட வேண்டும்.





அன்றைய வீடியோவை உருவாக்கவும்

யூனிட் சோதனை வகுப்பின் எல்லைக்கு வெளியே இந்த சோதனை அல்லாத செயல்பாடுகளில் ஏதேனும் ஒன்றைச் செய்வது சாத்தியமற்றது என்றால் கடினமானதாக இருக்கலாம். உங்கள் சோதனை வகுப்பை வெற்றிகரமாகச் செயல்படுத்துவது இந்தச் செயல்பாடுகளைச் சார்ந்து இருக்கலாம், எனவே இந்தச் சிக்கலைத் தீர்க்க ஜூனிட் இரண்டு ஜோடி சிறுகுறிப்புகளை வழங்குகிறது.





@BeforeAll Annotation

ஒரு ஜூனிட் சோதனை வகுப்பில் ஒன்று அல்லது அதற்கு மேற்பட்ட சோதனை முறைகள் இருக்கலாம். @BeforeAll சிறுகுறிப்பு ஒரு சோதனை வகுப்பில் உள்ள அனைத்து சோதனை முறைகளுக்கும் முன் ஒரு குறிப்பிட்ட முறை செயல்படுத்தப்பட வேண்டும் என்பதைக் குறிக்கிறது. இந்த சிறுகுறிப்புடன் தொடர்புடைய முறையானது சோதனை வகுப்பில் உள்ள சோதனை முறைகளின் எண்ணிக்கையைப் பொருட்படுத்தாமல் ஒரு முறை மட்டுமே (சோதனையின் தொடக்கத்தில்) செயல்படுத்தப்படும்.





@BeforeAll சிறுகுறிப்பைப் பயன்படுத்தும் எந்த முறையும் சில நிபந்தனைகளைப் பின்பற்ற வேண்டும். இந்த முறைகள் வெற்றிடமாக திரும்பும் வகையைக் கொண்டிருக்க வேண்டும், பொதுவில் இருக்க வேண்டும் மற்றும் தனிப்பட்டதாக இருக்கக்கூடாது. @BeforeAll சிறுகுறிப்பு ஒரு நிறுவுவதற்கு ஏற்றது ஒரு தரவுத்தளத்திற்கான இணைப்பு அல்லது புதிய கோப்பை உருவாக்குதல். @BeforeAll சிறுகுறிப்பை நீங்கள் எவ்வாறு பயன்படுத்தலாம் என்பதைக் காட்ட இந்தக் கட்டுரை கால்குலேட்டர் சோதனை வகுப்பைப் பயன்படுத்துகிறது.

ஒரு CPU எவ்வளவு சூடாக வேண்டும்

கால்குலேட்டர் வகுப்பு

package com.app; 
public class Calculator {
public static int add(int num1, int num2) {
return num1 + num2;
}
public static int subtract(int num1, int num2) {
return num1 - num2;
}
public static int multiply(int num1, int num2) {
return num1 * num2;
}
public static int divide(int num1, int num2) {
return num1 / num2;
}
}

கால்குலேட்டர் சோதனை வகுப்பு

import static org.junit.jupiter.api.Assertions.*; 
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.DisplayName;

@DisplayName("Test class demonstrating how to use the before and after annotations.")
class CalculatorTest {
@BeforeAll
public static void powerOnCalculator() {
System.out.println("The calculator is on");
}

@Test
@DisplayName("Testing method that adds two integer values.")
public void testAdd() {
assertEquals(7, Calculator.add(3, 4));
}

@Test
@DisplayName("Testing method that subtracts one integer value from another.")
public void testSubtract() {
assertEquals(6, Calculator.subtract(9, 3));
}

@Test
@DisplayName("Testing method that multiplies two integer values")
public void testMultiply() {
assertEquals(10, Calculator.multiply(5, 2));
}

@Test
@DisplayName("Testing method that divides one integer value by another")
public void testDivide() {
assertEquals(2, Calculator.divide(4, 2));
}
}

இந்த வகுப்பில், @BeforeAll சிறுகுறிப்பு powerOnCalculator() முறையில் செயல்படுகிறது, இது எந்த சோதனை ஓட்டத்திற்கும் முன் 'கால்குலேட்டர் இயக்கத்தில் உள்ளது' என்று அச்சிடுகிறது. வெற்றிகரமான சோதனைச் செயலாக்கம் பின்வரும் சோதனை அறிக்கையை அச்சிடுகிறது:



  அனைத்து சிறுகுறிப்பு அறிக்கைக்கும் முன்

@BeforeAll சிறுகுறிப்புடன் தொடர்புடைய முறை சோதனை அறிக்கையில் தோன்றவில்லை என்பதை நீங்கள் பார்க்க முடியும். இருப்பினும், @BeforeAll சிறுகுறிப்பு முறையில் பிழை இருந்தால், சோதனை அறிக்கை முடிவுகள் தோல்வியுடன் இதைக் குறிக்கும்.

@BeforeEach சிறுகுறிப்பு

@BeforeAll annotated முறையைப் போலவே, @BeforeEach annotated முறையும் சோதனை அறிக்கையில் தோன்றாது. @BeforeEach சிறுகுறிப்பு முறையானது ஒரு சோதனை வகுப்பில் ஒவ்வொரு சோதனை முறைக்கும் முன் செயல்படுத்தப்படுகிறது. எனவே, ஒரு சோதனை வகுப்பில் இரண்டு சோதனை முறைகள் இருந்தால், @BeforeEach சிறுகுறிப்பு இரண்டு முறை செயல்படுத்தப்படும்.





import static org.junit.jupiter.api.Assertions.*; 
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@DisplayName("Test class demonstrating how to use the before and after annotations.")
class CalculatorTest {
@BeforeAll
public static void powerOnCalculator() {
System.out.println("The calculator is on");
}
@BeforeEach
public void clearCalculator() {
System.out.println("The calculator is ready");
}
@Test
@DisplayName("Testing method that adds two integer values.")
public void testAdd() {
assertEquals(7, Calculator.add(3, 4));
}
@Test
@DisplayName("Testing method that subtracts one integer value from another.")
public void testSubtract() {
assertEquals(6, Calculator.subtract(9, 3));
}
@Test
@DisplayName("Testing method that multiplies two integer values")
public void testMultiply() {
assertEquals(10, Calculator.multiply(5, 2));
}
@Test
@DisplayName("Testing method that divides one integer value by another")
public void testDivide() {
assertEquals(2, Calculator.divide(4, 2));
}
}

கால்குலேட்டர் டெஸ்ட் வகுப்பில் @BeforeEach சிறுகுறிப்பைச் சேர்ப்பது பின்வரும் வெளியீட்டை உருவாக்குகிறது:

  ஒவ்வொரு சிறுகுறிப்பு வெளியீடுக்கும் முன்

@BeforeEach சிறுகுறிப்புடன் தொடர்புடைய முறையானது, ஒவ்வொரு சோதனை முறைக்கும் ஒருமுறை நான்கு முறை செயல்படுத்தப்படும். @BeforeEach முறையானது நிலையானது அல்ல, வெற்றிடமாக திரும்பும் வகையைக் கொண்டுள்ளது மற்றும் தனிப்பட்டது அல்ல, ஏனெனில் இவை கட்டாய நிபந்தனைகள். @BeforeEach சிறுகுறிப்புடன் தொடர்புடைய முறை @BeforeAll முறைக்குப் பிறகு இயங்குகிறது என்பதையும் கவனத்தில் கொள்ள வேண்டும்.





ஐபோன் 7 இல் உருவப்படத்தை எவ்வாறு பயன்படுத்துவது

@AfterAll சிறுகுறிப்பு

@AfterAll சிறுகுறிப்பு கொண்ட ஒரு முறை, சோதனை வகுப்பில் உள்ள அனைத்து சோதனை முறைகளும் அவற்றின் செயலாக்கத்தை முடித்த பிறகு செயல்படுத்தப்படும். @AfterAll சிறுகுறிப்பு இதற்கு ஏற்றது அடிப்படை கோப்பு செயல்பாடுகள் , ஒரு கோப்பை மூடுவது அல்லது தரவுத்தளத்திலிருந்து துண்டிப்பது போன்றது. @AfterAll சிறுகுறிப்பு என்பது @BeforeAll சிறுகுறிப்புக்கு இணையானதாகும். @BeforeAll சிறுகுறிப்பு போலவே, @AfterAll சிறுகுறிப்பும் நிலையானதாக இருக்க வேண்டும், வெற்றிடத்தை திரும்பப் பெற வேண்டும், மேலும் பெரும்பாலானவை தனிப்பட்டதாக இருக்கக்கூடாது.

@AfterAll 
public static void powerOffCalculator() {
System.out.println("The calculator is off");
}

தற்போதுள்ள கால்குலேட்டர் டெஸ்ட் வகுப்பில் @AfterAll சிறுகுறிப்பு முறையைச் சேர்ப்பது பின்வரும் வெளியீட்டை கன்சோலில் அச்சிடுகிறது:

  அனைத்து சிறுகுறிப்பு வெளியீடு

@AfterAll சிறுகுறிப்பைப் பயன்படுத்தும் powerOffCalculator() முறை, அனைத்து சோதனை முறைகளையும் செயல்படுத்திய பிறகு, சோதனை வகுப்பின் முடிவில் அச்சிடுகிறது என்பதை நினைவில் கொள்ளவும்.

@AfterEach சிறுகுறிப்பு

@AfterEach சிறுகுறிப்பு என்பது @BeforeEach சிறுகுறிப்புக்கு இணையானதாகும். @BeforeAll மற்றும் @AfterAll சிறுகுறிப்புகளில் இருந்து சற்றே வித்தியாசமான அதே கட்டாய நிபந்தனைகள் உள்ளன. @AfterEach சிறுகுறிப்பை @BeforeEach சிறுகுறிப்பில் இருந்து வேறுபடுத்துவது (அவற்றின் பெயர்களைத் தவிர) @AfterEach முறை ஒவ்வொரு சோதனை முறைக்குப் பிறகும் இயங்குகிறது.

@AfterEach 
public void returnResults() {
System.out.println("The results are ready");
}

கால்குலேட்டர் டெஸ்ட் வகுப்பை இயக்குவது பின்வரும் வெளியீட்டை கன்சோலில் அச்சிடுகிறது:

  ஒவ்வொரு சிறுகுறிப்பு வெளியீடு

@AfterEach சிறுகுறிப்பு (returnResults) உடன் தொடர்புடைய முறை நான்கு முறை அச்சிடுகிறது என்பதை வெளியீடு காட்டுகிறது. ரிட்டர்ன் ரிசல்ட்ஸ்() முறையின் ஒவ்வொரு செயலாக்கமும் ஒவ்வொரு யூனிட் சோதனையின் செயல்பாட்டிற்குப் பிறகுதான் நடக்கும். @BeforeEach சிறுகுறிப்புடன் தொடர்புடைய முறையிலிருந்து ஒவ்வொரு வெளியீட்டிற்குப் பிறகும் returnResults() முறை வெளியீடு தோன்றும் என்பதன் மூலம் இது தெளிவாகிறது.

தவறான குறியீடு வன்பொருள் சிதைந்த பக்கத்தை நிறுத்து

சிறுகுறிப்புகளைப் பயன்படுத்தி உங்கள் சோதனைத் தொகுப்புகளை பாலிஷ் செய்யவும்

முன் மற்றும் பின் ஜோடி சிறுகுறிப்புகளைப் பயன்படுத்தி சோதனை அல்லாத செயல்முறைகளைக் கையாள JUnit உங்களை அனுமதிக்கிறது. இந்த நான்கு சிறுகுறிப்புகள் உங்கள் சோதனைகளுக்கு மதிப்பு சேர்க்கும் பல சிறுகுறிப்புகளின் பட்டியலைச் சேர்ந்தவை. ஜூனிட்டின் மற்றொரு சிறுகுறிப்பு @DisplayName.

முழு கால்குலேட்டர் டெஸ்ட் வகுப்பைக் காண்பிக்கும் இரண்டு குறியீடு எடுத்துக்காட்டுகள் @DisplayName சிறுகுறிப்பைப் பயன்படுத்துகின்றன. @DisplayName சிறுகுறிப்பு உங்கள் சோதனை வகுப்புகள் மற்றும் சோதனை முறைகளுக்கு மிகவும் அர்த்தமுள்ள பெயர்களை உருவாக்க உதவுகிறது.