ეს სახელმძღვანელო განმარტავს, თუ როგორ უნდა იგნორირება ტესტის შემთხვევები JUnit-ში მაგალითებით. თქვენ ისწავლით @Ignore გამოყენებას JUnit 4-ში & @Disabled Annotation JUnit 5-ში:
წინა გაკვეთილზე, ჩვენ მივიღეთ იმის გაგება, თუ რას ჰქვია API ანოტაცია, რას აკეთებს ის და ასევე ვიხილეთ ძირითადი მაგალითები ცხოვრების ციკლის ანოტაციების გამოყენების შესახებ, მათი პრიორიტეტები. გააჩერეთ, როდესაც სატესტო ქეისი შესრულდება.
მოდით ვცადოთ ნათელი მოვფინოთ სიტუაციებს, როდესაც გვჭირდება არ გაშვება ან არის არ სავარაუდო ყველა სატესტო შემთხვევის გაშვება. ჩვენ ვისწავლით ტესტის შემთხვევების იგნორირებას JUnit-ში.
JUnit იგნორირება ტესტის შემთხვევები
შეიძლება არსებობდეს გარკვეული ტესტ-ქეისები, რომლებიც არ განხორციელდება, რადგან ისინი არ შეიძლება ეხება კოდის გარკვეულ ცვლილებებს, ან შესაძლოა სატესტო შემთხვევის კოდი ჯერ კიდევ დამუშავების პროცესშია, ამიტომ ჩვენ თავიდან ავიცილებთ მათ გაშვებას.
ასეთ შემთხვევებში შეიძლება დაგჭირდეთ სატესტო შემთხვევების ნაკრების გაშვება რამდენიმე სხვას გამოტოვებით. . მაშ, რა არის ის, რასაც JUnit 4, ისევე როგორც JUnit 5, გვაძლევს ისე, რომ ჩვენ შევძლოთ მხოლოდ რამდენიმე სატესტო შემთხვევის გაშვება, ხოლო იგნორირება ან გამორთვა ან რამდენიმე ტესტის შემთხვევის „გამოტოვება“?
საბედნიეროდ, ჩვენ გვაქვს @Ignore ანოტაცია JUnit 4 , რათა გამოტოვოთ სატესტო შემთხვევა, ხოლო @Disabled ანოტაცია JUnit 5 იგივე გააკეთოს.
JUnit 4 – @Ignore Annotation
- JUnit 4 @Ignore ანოტაცია შეიძლება გამოყენებულ იქნას ტესტის მეთოდისთვის, რათა გამოტოვოთ მისი შესრულება. Ამ შემთხვევაში,თქვენ უნდა გამოიყენოთ @Ignore @Test ანოტაციასთან ერთად ტესტის მეთოდისთვის, რომლის გამოტოვებაც გსურთ.
- ანოტაცია ასევე შეიძლება გამოყენებულ იქნას სატესტო კლასზე, რათა გამოტოვოთ ყველა ტესტის შემთხვევა კლასის ქვეშ. ამ შემთხვევაში, თქვენ უნდა გამოიყენოთ @Ignore კლასის დონეზე.
კოდს სჭირდება პაკეტი org.junit.Ignore იმპორტირებული, რათა @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, რადგან გამოტოვებულმა ტესტმაც კი სცადა შესრულება.
კონსოლის ფანჯრის ქვემოთ მოცემული ეკრანის სურათი იგივეს ამტკიცებს.
@Ignore Annotation With A Reason Parameter
არსებობს @Ignore ანოტაციის ვარიაციაც. ანოტაცია იღებს ერთ არგუმენტს სტრიქონის მნიშვნელობით, რაც არის ტესტის გამოტოვების მიზეზი.
მოდით ვაჩვენოთ @Ignore annotation-ის ეს ვარიაცია.
კოდის ნაწყვეტი არის შემდეგი. :
@Ignore("the testcase is under development") @Test public void test_JUnit1() { System.out.println("This is the testcase test_JUnit1() in this class"); }
კონსოლის ფანჯარა აჩვენებს იმავე შედეგს, რაც იყო @Ignore ანოტაციისთვის გადაცემის მიზეზის გარეშე.
ახლა ვნახოთ, როგორ ხდება ყველა ტესტი.კლასს მიეკუთვნება შეიძლება გამორთული იყოს. ახლა ჩვენ განვაახლებთ @Ignore ანოტაციას კლასის დონეზე JUnitProgram.java-სთვის
კოდის ნაწყვეტი არის როგორც ნაჩვენებია ქვემოთ:
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"); }
კლასის ფაილის შესრულების პოსტი, კონსოლი აჩვენებს არაფერს, და Run count JUnit ჩანართში აჩვენებს 1 კლასის გამოტოვებას 1 კლასიდან .
ქვემოთ არის კონსოლის ფანჯრის ეკრანის სურათი:
JUnit 5 – @Disabled Annotation
@Disabled ანოტაცია JUnit 5-ში მუშაობს ისევე, როგორც @Ignore annotation JUnit 4-ში.
- შეგიძლიათ გამორთოთ ან გამოტოვოთ შესრულება ტესტის მეთოდისთვის ან ტესტების ჯგუფისთვის ანოტაციის გამოყენებით ტესტის დონეზე.
- ან ყველა ტესტის გამოტოვება შესაძლებელია კლასის დონეზე @Disabled ანოტაციის გამოყენებით, ტესტის მეთოდის დონეზე გამოყენების ნაცვლად.
როგორც @Ignore, მიზეზიც შეიძლება ჩაბარდეს @Disabled-ისთვის ნებისმიერი დეველოპერისთვის ან ბიზნეს ანალიტიკოსისთვის, რათა იცოდეს, რატომ იქნა გამოტოვებული კონკრეტული ტესტის შემთხვევა. პარამეტრი რჩება არასავალდებულო, ისევე როგორც @Ignore-ის შემთხვევაში.
( შენიშვნა: ჩვენ თავიდან ავიცილებთ @Disabled ანოტაციის დემონსტრირებას რეალური კოდის საშუალებით, რათა თავიდან ავიცილოთ გამეორება, როგორც ეს შემდეგნაირად ხდება ზუსტი მეთოდი, რომელსაც @Ignore მიჰყვება JUnit 4-ში.)
ერთადერთი განსხვავება, რომელსაც უნდა დააკვირდეთ @Ignore Vs @Disabled შემთხვევაში არის ის, რომ როდესაც ანოტაცია გამოიყენება კლასის დონე, JUnit კლასის ფაილის შემდგომი შესრულება,გაშვების რაოდენობა JUnit 4 შემთხვევაში, აჩვენებს 1/1 კლასის გამოტოვებას.
აქედან გამომდინარე გამოტოვებული კლასის რაოდენობა მოცემულია ხოლო იმ შემთხვევაში მე-5 განყოფილება გვიჩვენებს, რომ 3/3 ტესტის შემთხვევა გამოტოვებულია იმის გათვალისწინებით, რომ სამი ტესტის მეთოდი გამოტოვებულია კლასში ტესტის სულ სამი მეთოდიდან.
აქედან გამომდინარე, გამოტოვებული ტესტის შემთხვევების ხილვადობა , JUnit 5 აკეთებს ოდნავ უკეთეს სამუშაოს, ვიდრე JUnit 4-თან შედარებით.
დასკვნა
ამ გაკვეთილზე ჩვენ ვისწავლეთ რა არის ის სიტუაციები, როდესაც შეიძლება დაგჭირდეთ გამოტოვოთ რამდენიმე სატესტო შემთხვევის შესრულება. ჩვენ ასევე ვისწავლეთ როგორ გამოვტოვოთ გარკვეული ტესტის შემთხვევები, როგორც JUnit 4, ასევე JUnit 5.