ഉദാഹരണങ്ങൾക്കൊപ്പം ജൂണിറ്റിലെ ടെസ്റ്റ് കേസുകൾ എങ്ങനെ അവഗണിക്കാമെന്ന് ഈ ട്യൂട്ടോറിയൽ വിശദീകരിക്കുന്നു. ജൂണിറ്റ് 4-ൽ @ഇഗ്നോർ ഉപയോഗിക്കാൻ നിങ്ങൾ പഠിക്കും & @Disabled Annotation in JUnit 5:
മുമ്പത്തെ ട്യൂട്ടോറിയലിൽ, വ്യാഖ്യാനം എന്ന് വിളിക്കുന്ന API എന്താണ്, അത് എന്താണ് ചെയ്യുന്നത്, കൂടാതെ ജീവിതചക്ര വ്യാഖ്യാനങ്ങൾ എങ്ങനെ ഉപയോഗിക്കണം, അവയുടെ മുൻഗണനകൾ എന്നിവയെക്കുറിച്ചുള്ള അടിസ്ഥാന ഉദാഹരണങ്ങളും ഞങ്ങൾ മനസ്സിലാക്കി. ഒരു ടെസ്റ്റ് കേസ് എക്സിക്യൂട്ട് ചെയ്യുമ്പോൾ പിടിക്കുക എല്ലാ ടെസ്റ്റ് കേസുകളും പ്രവർത്തിപ്പിക്കാൻ പാടില്ല. ജൂണിറ്റിൽ ടെസ്റ്റ് കേസുകൾ അവഗണിക്കാൻ ഞങ്ങൾ പഠിക്കും.
ജൂണിറ്റ് ടെസ്റ്റ് കേസുകൾ അവഗണിക്കുക
ചില ടെസ്റ്റ് കേസുകൾ റൺ ചെയ്യപ്പെടാതെയിരിക്കാം, കാരണം അവ പ്രവർത്തിക്കില്ലായിരിക്കാം ചില കോഡ് മാറ്റങ്ങളുമായി ബന്ധപ്പെട്ടതാകാം അല്ലെങ്കിൽ ടെസ്റ്റ് കേസുകൾക്കുള്ള കോഡ് ഇപ്പോഴും വികസിച്ചുകൊണ്ടിരിക്കാം, അതിനാൽ ഞങ്ങൾ അവ പ്രവർത്തിപ്പിക്കുന്നത് ഒഴിവാക്കുന്നു.
അത്തരം സന്ദർഭങ്ങളിൽ, മറ്റ് ചിലത് ഒഴിവാക്കിക്കൊണ്ട് ഞങ്ങൾക്ക് ഒരു കൂട്ടം ടെസ്റ്റ് കേസുകൾ പ്രവർത്തിപ്പിക്കേണ്ടി വന്നേക്കാം. . അതിനാൽ, JUnit 4, അതുപോലെ JUnit 5, ഞങ്ങൾക്ക് എന്താണ് നൽകുന്നത്, അതിനാൽ ചില ടെസ്റ്റ് കേസുകളെ അവഗണിക്കുകയോ പ്രവർത്തനരഹിതമാക്കുകയോ അല്ലെങ്കിൽ അതിനെ 'ഒഴിവാക്കുക' എന്ന് വിളിക്കുകയോ ചെയ്യുമ്പോൾ കുറച്ച് ടെസ്റ്റ് കേസുകൾ മാത്രം പ്രവർത്തിപ്പിക്കാൻ ഞങ്ങൾക്ക് കഴിയും?
ഭാഗ്യവശാൽ, ഒരു ടെസ്റ്റ് കേസ് ഒഴിവാക്കാൻ @അവഗണിക്കുക JUnit 4 എന്ന വ്യാഖ്യാനമുണ്ട്, അതേസമയം @Disabled JUnit 5 വ്യാഖ്യാനമുണ്ട്. അതുപോലെ ചെയ്യാൻ.
ജൂണിറ്റ് 4 – @അവഗണന വ്യാഖ്യാനം
- ജൂണിറ്റ് 4 @ഇഗ്നോർ വ്യാഖ്യാനം ഒരു ടെസ്റ്റ് രീതിക്ക്, അതിന്റെ നിർവ്വഹണം ഒഴിവാക്കുന്നതിന് പ്രയോഗിക്കാവുന്നതാണ്. ഈ സാഹചര്യത്തിൽ,നിങ്ങൾ ഒഴിവാക്കാനാഗ്രഹിക്കുന്ന ഒരു ടെസ്റ്റ് രീതിക്ക് @Test വ്യാഖ്യാനത്തോടൊപ്പം @Ignore ഉപയോഗിക്കേണ്ടതുണ്ട്.
- ഒരു ക്ലാസിന് കീഴിലുള്ള എല്ലാ ടെസ്റ്റ് കേസുകളും ഒഴിവാക്കുന്നതിന്, ടെസ്റ്റ് ക്ലാസിലും വ്യാഖ്യാനം പ്രയോഗിക്കാവുന്നതാണ്. ഈ സാഹചര്യത്തിൽ, നിങ്ങൾ ക്ലാസ് തലത്തിൽ @ഇഗ്നോർ ഉപയോഗിക്കേണ്ടതുണ്ട്.
കോഡിന് org.junit എന്ന പാക്കേജ് ആവശ്യമാണ്. @ഇഗ്നോർ പ്രവർത്തിക്കുന്നതിന് ഇംപോർട്ടുചെയ്യുന്നതിന് അവഗണിക്കുക. ഒരു ജൂണിറ്റ് 4 ടെസ്റ്റിൽ ഒരു ടെസ്റ്റ് രീതി എങ്ങനെ ഒഴിവാക്കാമെന്ന് നമുക്ക് കാണിക്കാം. ആദ്യ ടെസ്റ്റ്കേസ് രീതി ഒഴിവാക്കാൻ ഞങ്ങൾ JUnitProgram.java പരിഷ്ക്കരിക്കും.
കോഡ് സ്നിപ്പറ്റ് ഇതാണ്:
@Ignore @Test public void test_JUnit1() { System.out.println("This is the testcase test_JUnit1() in this class"); } @Test public void test_JUnit2() { System.out.println("This is the testcase test_JUnit2() in this class"); } @Test public void test_JUnit3() { System.out.println("This is the testcase test_JUnit3() in this class"); }
ക്ലാസ് ഫയലിന്റെ എക്സിക്യൂഷനിൽ, test_JUnit1() എക്സിക്യൂഷൻ സമയത്ത് ഒഴിവാക്കിയിരിക്കുന്നു. കൂടാതെ, @ഇഗ്നോർ ഉപയോഗിച്ച് വ്യാഖ്യാനിച്ച രീതിയും മറ്റ് എല്ലാ ടെസ്റ്റ് രീതികളും പ്രതീക്ഷിച്ചതുപോലെ പ്രവർത്തിക്കുന്നു.
ഫലമായുള്ള റൺ എണ്ണം 3/3 ടെസ്റ്റ് കേസുകളും 1 ടെസ്റ്റ്കേസ് ഷോകളും ഒഴിവാക്കി. ഒഴിവാക്കിയ ടെസ്റ്റ്കേസ് പോലും എക്സിക്യൂട്ട് ചെയ്യാൻ ശ്രമിച്ചതിനാൽ റൺ കൗണ്ട് 3/3 കാണിച്ചു.
കൺസോൾ വിൻഡോയുടെ താഴെയുള്ള സ്ക്രീൻഷോട്ട് ഇത് തെളിയിക്കുന്നു.
@Annotation with A Reason Parameter
@Ignore വ്യാഖ്യാനത്തിനും ഒരു വ്യത്യാസമുണ്ട്. വ്യാഖ്യാനം ഒരു സ്ട്രിംഗ് മൂല്യമുള്ള ഒരു ആർഗ്യുമെന്റിൽ എടുക്കുന്നു, ഇത് ടെസ്റ്റ് ഒഴിവാക്കാനുള്ള കാരണമാണ്.
@അവഗണന വ്യാഖ്യാനത്തിന്റെ ഈ വ്യതിയാനം നമുക്ക് കാണിക്കാം.
കോഡ് സ്നിപ്പെറ്റ് ഇപ്രകാരമാണ്. :
@Ignore("the testcase is under development") @Test public void test_JUnit1() { System.out.println("This is the testcase test_JUnit1() in this class"); }
കൺസോൾ വിൻഡോ @അവഗണന വ്യാഖ്യാനത്തിലേക്ക് കാരണം കൂടാതെ അതേ ഫലം കാണിക്കുന്നു.
ഇപ്പോൾ, എല്ലാ പരിശോധനകളും എങ്ങനെയെന്ന് നോക്കാം.ഒരു ക്ലാസിൽ ഉൾപ്പെടുന്നവർക്ക് അപ്രാപ്തമാക്കാം. JUnitProgram.java
കോഡ് സ്നിപ്പെറ്റ് ചുവടെ കാണിച്ചിരിക്കുന്നതുപോലെയാണ് @Ignore വ്യാഖ്യാനം ഞങ്ങൾ ഇപ്പോൾ അപ്ഡേറ്റ് ചെയ്യും:
import org.junit.AfterClass; @Ignore("the testcase is under development") public class JUnitProgram { @BeforeClass public static void preClass() { System.out.println("This is the preClass() method that runs one time before the class"); } @Before public void setUp() { System.out.println("_______________________________________________________\n"); System.out.println("This is the setUp() method that runs before each testcase"); } @Test public void test_JUnit1() { System.out.println("This is the testcase test_JUnit1() in this class"); }
ക്ലാസ് ഫയലിന്റെ എക്സിക്യൂഷൻ പോസ്റ്റ്, കൺസോൾ ഒന്നുമില്ല, കാണിക്കുന്നു, ഒപ്പം ജൂണിറ്റ് ടാബിന് കീഴിലുള്ള റൺ കൗണ്ട് 1 ക്ലാസ് 1 ക്ലാസിൽ നിന്ന് ഒഴിവാക്കി .
കൺസോൾ വിൻഡോയുടെ സ്ക്രീൻഷോട്ട് ചുവടെയുണ്ട്:
ജൂൺ 5 – @Disabled Annotation
@Disabled annotation in JUnit 5-ൽ പ്രവർത്തിക്കുന്നത് പോലെ JUnit 4-ലെ വ്യാഖ്യാനം അവഗണിക്കുക.
- ടെസ്റ്റ് തലത്തിൽ വ്യാഖ്യാനം പ്രയോഗിച്ച് ഒരു ടെസ്റ്റ് രീതിക്കോ ഒരു കൂട്ടം ടെസ്റ്റുകൾക്കോ വേണ്ടി നിങ്ങൾക്ക് പ്രവർത്തനരഹിതമാക്കുകയോ ഒഴിവാക്കുകയോ ചെയ്യാം.
- അല്ലെങ്കിൽ ക്ലാസ് തലത്തിൽ @Disabled വ്യാഖ്യാനം പ്രയോഗിക്കുന്നതിലൂടെ എല്ലാ ടെസ്റ്റുകളും ഒഴിവാക്കാവുന്നതാണ്.
@Ignore പോലെ, ഒരു കാരണവും പാസ്സാക്കാം. ഒരു നിർദ്ദിഷ്ട ടെസ്റ്റ്കേസ് ഒഴിവാക്കിയത് എന്തുകൊണ്ടാണെന്ന് അറിയാൻ ഏതെങ്കിലും ഡവലപ്പർക്കോ ബിസിനസ്സ് അനലിസ്റ്റിനോ വേണ്ടി @Disabled. @അവഗണനയുടെ കാര്യത്തിലെന്നപോലെ പാരാമീറ്റർ ഓപ്ഷണലായി തുടരുന്നു.
( ശ്രദ്ധിക്കുക: ആവർത്തനം ഒഴിവാക്കാൻ ഒരു യഥാർത്ഥ കോഡിലൂടെ @Disabled വ്യാഖ്യാനം പ്രദർശിപ്പിക്കുന്നത് ഞങ്ങൾ ഒഴിവാക്കും. ജൂണിറ്റ് 4-ൽ @ഇഗ്നോർ പിന്തുടരുന്ന കൃത്യമായ ഫാഷൻ.)
നിങ്ങൾ @ഇഗ്നോർ Vs @Disabled എന്ന വിഷയത്തിൽ നിരീക്ഷിക്കേണ്ട ഒരേയൊരു വ്യത്യാസം വ്യാഖ്യാനം പ്രയോഗിക്കുമ്പോൾ മാത്രമാണ് ക്ലാസ് ലെവൽ, ജൂണിറ്റ് ക്ലാസ് ഫയലിന്റെ പോസ്റ്റ് എക്സിക്യൂഷൻ, ജൂണിറ്റ് 4 -ന്റെ കാര്യത്തിൽ റൺ കൗണ്ട്, 1/1 ക്ലാസ് ഒഴിവാക്കിയതായി കാണിക്കുന്നു.
അതിനാൽ ഒഴിവാക്കപ്പെടുന്ന ക്ലാസിന്റെ എണ്ണം നൽകിയിരിക്കുന്നു. ജൂണിറ്റ് 5 ക്ലാസിലെ ആകെ മൂന്ന് ടെസ്റ്റ് രീതികളിൽ മൂന്ന് ടെസ്റ്റ് രീതികൾ ഒഴിവാക്കി 3/3 ടെസ്റ്റ് കേസുകൾ ഒഴിവാക്കിയതായി കാണിക്കുന്നു.
അതിനാൽ, ഒഴിവാക്കപ്പെട്ട ടെസ്റ്റ് കേസുകളുടെ എണ്ണത്തിന്റെ ദൃശ്യപരത , ജൂൺ 5 ജൂണിറ്റ് 4 നെ അപേക്ഷിച്ച് അൽപ്പം മികച്ച ജോലി ചെയ്യുന്നു.