یہ ٹیوٹوریل مثالوں کے ساتھ JUnit میں ٹیسٹ کیسز کو نظر انداز کرنے کا طریقہ بتاتا ہے۔ آپ JUnit 4 میں @Ignore استعمال کرنا سیکھیں گے اور @Disabled annotation in JUnit 5:
پچھلے ٹیوٹوریل میں، ہمیں یہ سمجھنا پڑا کہ تشریح نامی API کیا ہے، یہ کیا کرتا ہے اور لائف سائیکل تشریحات کے استعمال کے بارے میں بنیادی مثالیں بھی دیکھی ہیں، ان کی ترجیحات جب کوئی ٹیسٹ کیس مکمل ہو جائے تو ہولڈ کریں۔
آئیے ان حالات پر روشنی ڈالنے کی کوشش کریں جب ہمیں ضرورت ہے نہیں چلانے یا ہیں نہیں سمجھا جاتا ہے کہ تمام ٹیسٹ کیسز چلائے جائیں۔ ہم JUnit میں ٹیسٹ کیسز کو نظر انداز کرنا سیکھیں گے۔
JUnit ٹیسٹ کیسز کو نظر انداز کریں
ایسے کچھ ٹیسٹ کیسز ہو سکتے ہیں جو نہیں چلائے جا سکتے کیونکہ وہ نہیں ہو سکتے۔ کچھ کوڈ کی تبدیلیوں سے متعلق ہو یا ٹیسٹ کیسز کا کوڈ ابھی تیار ہو رہا ہو، اس لیے ہم انہیں چلانے سے گریز کرتے ہیں۔
ایسے معاملات میں، ہمیں کچھ دوسرے کو چھوڑ کر ٹیسٹ کیسز کا ایک سیٹ چلانے کی ضرورت پڑ سکتی ہے۔ . تو، یہ کیا ہے کہ JUnit 4 کے ساتھ ساتھ JUnit 5، ہمیں فراہم کرتا ہے تاکہ ہم چند ٹیسٹ کیسز کو نظر انداز یا غیر فعال کرتے ہوئے یا اسے 'سکپنگ' کہہ کر صرف چند ٹیسٹ کیسز چلا سکیں؟
خوش قسمتی سے، ہمارے پاس JUnit 4 کے لیے @Ignore تشریح ایک ٹیسٹ کیس کو چھوڑنے کے لیے ہے جبکہ @Disabled تشریح JUnit 5 کے لیے ہے۔ ایسا ہی کرنے کے لیے۔
JUnit 4 – @ignore Annotation
- JUnit 4 @Ignore تشریح کو ٹیسٹ کے طریقہ کار کے لیے لاگو کیا جا سکتا ہے، تاکہ اس پر عمل نہ کیا جا سکے۔ اس معاملے میں،آپ کو @Test تشریح کے ساتھ @Ignore استعمال کرنے کی ضرورت ہے اس ٹیسٹ کے طریقہ کے لیے جسے آپ چھوڑنا چاہتے ہیں۔
- تشریح کو ٹیسٹ کلاس پر بھی لاگو کیا جا سکتا ہے، کلاس کے تحت تمام ٹیسٹ کیسز کو چھوڑنے کے لیے۔ اس صورت میں، آپ کو کلاس کی سطح پر @Ignore استعمال کرنے کی ضرورت ہے۔
کوڈ کے لیے org.junit.Ignore کو امپورٹ کرنے کے لیے پیکیج کی ضرورت ہے۔ آئیے یہ ظاہر کرتے ہیں کہ 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() عملدرآمد کے دوران چھوڑ دیا جاتا ہے. اس کے علاوہ، @Ignore کے ساتھ تشریح کردہ طریقہ اور دیگر تمام ٹیسٹ کے طریقے حسب توقع چلتے ہیں۔
نتیجے میں رن کی گنتی 3/3 ٹیسٹ کیسز اور 1 ٹیسٹ کیس شوز کو چھوڑ کر دکھاتا ہے۔ رن کی گنتی 3/3 ظاہر ہوئی کیوں کہ چھوڑے گئے ٹیسٹ کیس نے بھی عمل کرنے کی کوشش کی۔
کنسول ونڈو کا نیچے دیا گیا اسکرین شاٹ بھی یہی ثابت کرتا ہے۔
3
@Ignore Annotation with A Reason Parameter
@Ignore تشریح میں بھی فرق ہے۔ تشریح سٹرنگ ویلیو کے ساتھ ایک ہی دلیل میں لیتی ہے جو ٹیسٹ کو چھوڑنے کی وجہ ہے۔
آئیے @Ignore تشریح کے اس تغیر کو ظاہر کرتے ہیں۔
کوڈ کا ٹکڑا درج ذیل ہے۔ :
@Ignore("the testcase is under development") @Test public void test_JUnit1() { System.out.println("This is the testcase test_JUnit1() in this class"); }
کنسول ونڈو وہی نتیجہ دکھاتی ہے جیسا کہ یہ @Ignore تشریح کو پاس کیے بغیر وجہ کے تھا۔
اب، آئیے دیکھتے ہیں کہ تمام ٹیسٹ کیسے ہوتے ہیں۔کلاس سے تعلق رکھنے والے کو غیر فعال کیا جا سکتا ہے۔ اب ہم 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"); }
کلاس فائل کے عمل کے بعد، کنسول دکھاتا ہے کچھ نہیں، اور چلائیں گنتی JUnit ٹیب کے نیچے دکھاتا ہے 1 کلاس کو 1 کلاس چھوڑ دیا گیا .
نیچے کنسول ونڈو کا اسکرین شاٹ ہے:
JUnit 5 - @Disabled تشریح
JUnit 5 میں @Disabled تشریح اسی طرح کام کرتی ہے جیسے JUnit 4 میں @ignore annotation.
- آپ ٹیسٹ کی سطح پر تشریح کو لاگو کرکے ٹیسٹ کے طریقہ کار یا ٹیسٹ کے گروپ کے لیے عمل کو غیر فعال یا چھوڑ سکتے ہیں۔
- یا تمام ٹیسٹوں کو @Disabled تشریح کو ٹیسٹ میتھڈ لیول پر لاگو کرنے کے بجائے کلاس لیول پر لاگو کرکے چھوڑا جا سکتا ہے۔
@Ignore کی طرح، ایک وجہ بھی پاس کی جا سکتی ہے۔ کسی بھی ڈویلپر یا کاروباری تجزیہ کار کے لیے @Disabled کے لیے یہ جاننے کے لیے کہ ایک مخصوص ٹیسٹ کیس کیوں چھوڑا گیا۔ پیرامیٹر بالکل اسی طرح اختیاری رہتا ہے جیسے @Ignore کے معاملے میں۔
( نوٹ: ہم دوبارہ سے بچنے کے لیے ایک حقیقی کوڈ کے ذریعے @Disabled تشریح کو ظاہر کرنے سے گریز کریں گے جیسا کہ یہ مندرجہ ذیل ہے۔ JUnit 4 میں @Ignore کی پیروی بالکل درست ہے۔)
صرف فرق جو آپ @Ignore بمقابلہ @Disabled کے معاملے میں دیکھیں گے وہ یہ ہے کہ جب تشریح کا اطلاق ہوتا ہے۔ کلاس لیول، JUnit کلاس فائل کے بعد عمل درآمد، JUnit 4 کے معاملے میں رن کاؤنٹ، 1/1 کلاس کو چھوڑا ہوا دکھاتا ہے۔
اس لیے اسکپ کی جانے والی کلاس کی گنتی فراہم کی جاتی ہے جبکہ اس معاملے میں 1 چھوڑے ہوئے ٹیسٹ کیسز کی مرئیت ، JUnit 5 JUnit 4 کے مقابلے میں قدرے بہتر کام کرتا ہے۔
نتیجہ
اس ٹیوٹوریل میں، ہم نے سیکھا کہ وہ کون سے حالات ہیں جب ہمیں چند ٹیسٹ کیسز پر عملدرآمد کو چھوڑنے کی ضرورت پڑسکتی ہے۔ ہم نے یہ بھی سیکھا کہ JUnit 4 اور JUnit 5 دونوں میں کچھ ٹیسٹ کیسز کو کیسے چھوڑنا ہے۔