TestNG Vs JUnit: Sự khác biệt là gì?

Mục lục:

Anonim

Cả Testng và Junit đều là khung Kiểm thử được sử dụng cho Kiểm thử đơn vị. TestNG tương tự như JUnit. Ít chức năng hơn được thêm vào nó làm cho TestNG mạnh hơn JUnit.

Hướng dẫn này chủ yếu tập trung để phân tích các tính năng của JUnit và TestNG. Nó giúp các nhà phát triển quyết định khung công tác nào nên được sử dụng cho Kiểm thử đơn vị. Trước tiên hãy phân tích những điểm tương đồng giữa TestNG và JUnit4.

TestNG là một khung thử nghiệm lấy cảm hứng từ JUnit và NUnit.

Đây là bảng hiển thị các tính năng được hỗ trợ bởi JUnit và TestNG.

So sánh tính năng JUnit4 và TestNG

Cả TestNG và JUnit4 đều trông giống nhau, ngoại trừ một hoặc hai tính năng. Hãy cùng so sánh giữa hai loại để nhanh chóng quyết định, công nghệ nào thuận lợi hơn cho Unit Testing. Bảng dưới đây nêu bật các tính năng được hỗ trợ bởi cả hai:

Chú thích

Cả JUnit và TestNG đều sử dụng chú thích và hầu như tất cả các chú thích đều giống nhau.

TestNG sử dụng @BeforeMethod, @ AfterMethod tương tự như @Before, @ After trong JUnit4.

Cả TestNG và Junit4 đều sử dụng @Test (timeout = 1000) cho thời gian chờ. Kiểm tra bảng bên dưới để biết thêm chi tiết-

SN Sự miêu tả TestNG JUnit 4
1 Kiểm tra chú thích @Kiểm tra @Kiểm tra
2 Thực thi trước khi phương thức thử nghiệm đầu tiên được gọi trong lớp hiện tại @BeforeClass @BeforeClass
3 Thực thi sau tất cả các phương thức kiểm tra trong lớp hiện tại @Sau giờ học @Sau giờ học
4 Thực hiện trước mỗi phương pháp thử nghiệm @BeforeMethod @Trước
5 Thực hiện sau mỗi phương pháp thử nghiệm @AfterMethod @Sau
6 chú thích để bỏ qua một bài kiểm tra @Test (enable = false) @Làm lơ
7 chú thích cho ngoại lệ @Test (mong đợiExceptions = ArithmeticException.class) @Test (dự kiến ​​= ArithmeticException.class)
số 8 hết giờ @Test (thời gian chờ = 1000) @Test (thời gian chờ = 1000)
9 Thực thi trước tất cả các bài kiểm tra trong bộ @BeforeSuite n / a
10 Thực thi sau tất cả các bài kiểm tra trong bộ @AfterSuite n / a
11 Thực thi trước khi chạy thử nghiệm @Trước khi kiểm tra n / a
12 Thực thi sau khi chạy thử nghiệm @AfterTest n / a
13 Các thực thi trước khi phương pháp thử nghiệm đầu tiên được gọi thuộc về bất kỳ nhóm nào trong số này được gọi @BeforeGroups n / a
14 chạy theo phương pháp kiểm tra cuối cùng thuộc về bất kỳ nhóm nào ở đây @AfterGroups n / a

Kiểm tra Suite

Các bộ được sử dụng để thực hiện nhiều bài kiểm tra cùng nhau. Suite có thể được tạo bằng cả TestNG và JUnit4. Tuy nhiên, các bộ công cụ mạnh hơn trong TestNG vì nó sử dụng phương pháp rất khác nhau để thực hiện các bài kiểm tra. Hãy hiểu nó bằng cách sử dụng đoạn mã như dưới đây:

Sử dụng JUnit4

Lớp dưới đây mô tả việc sử dụng bộ trong khi làm việc với JUnit4:

gói guru99.junit;nhập org.junit.runner.RunWith;nhập org.junit.runners.Suite;@RunWith (Suite.class)@ Suite.SuiteClasses ({SuiteTest1.class,SuiteTest2.class,})lớp công khai JunitTest {// Lớp này vẫn trống, nó chỉ được sử dụng như một phần mềm lưu trữ cho các chú thích ở trên}

Sử dụng TestNG

TestNG sử dụng xml để gói tất cả các thử nghiệm tại một nơi. Dưới đây xml mô tả việc sử dụng bộ ứng dụng trong khi làm việc với TestNG:

Bỏ qua kiểm tra

Sử dụng cả hai, chúng ta có thể bỏ qua một bài kiểm tra. Hãy xem nó bằng cách sử dụng ví dụ mã như được đưa ra bên dưới:

Sử dụng JUnit4

Đoạn mã dưới đây mô tả việc sử dụng chú thích @ignore khi làm việc với JUnit4:

@Làm lơpublic void method1 (){System.out.println ("Sử dụng @Ignore, việc thực thi này bị bỏ qua");}

Sử dụng TestNG

Đoạn mã bên dưới mô tả việc sử dụng chú thích @Test (enable = false) khi làm việc với TestNG:

@Test (đã bật = sai)public void TestWithException (){System.out.println ("Nên bỏ qua phương thức vì nó chưa sẵn sàng");}

Kiểm tra ngoại lệ

Kiểm tra ngoại lệ có sẵn cả trong TestNG và JUnit4. Nó được sử dụng để kiểm tra, ngoại lệ nào được ném ra khỏi bài kiểm tra?

Sử dụng JUnit4

Đoạn mã dưới đây mô tả việc sử dụng kiểm tra ngoại lệ trong khi làm việc với JUnit4:

@Test (dự kiến ​​= ArithmeticException.class)public void splitByZero (){Int i = 1/0;}

Sử dụng TestNG

Đoạn mã dưới đây mô tả việc sử dụng kiểm tra ngoại lệ khi làm việc với TestNG:

@Test (mong đợiExceptions = ArithmeticException.class)public void splitByZero (){Int i = 1/0;}

Hết giờ

Tính năng này được triển khai cả trong TestNg và JUnit4.Timeout được sử dụng để kết thúc kiểm tra mất nhiều thời gian hơn quy định (tính bằng mili giây).

Sử dụng JUnit4

Đoạn mã dưới đây mô tả việc sử dụng kiểm tra thời gian chờ khi làm việc với JUnit4:

@Test (thời gian chờ = 1000)public void method1 (){while (đúng);}

Sử dụng TestNG

Đoạn mã dưới đây mô tả việc sử dụng kiểm tra thời gian chờ khi làm việc với TestNG:

@Test (timeOut = 1000)public void method1 (){while (đúng);}

Kiểm tra tham số hóa

JUnit cung cấp một cách tiếp cận dễ dàng hơn và dễ đọc hơn để kiểm tra được gọi là Kiểm tra tham số hóa. Cả TestNG và JUnit đều hỗ trợ kiểm tra tham số nhưng khác nhau về cách chúng xác định giá trị tham số. Hãy xem cái này từng cái một.

Sử dụng JUnit4

Chú thích "@RunWith" và "@Parameter" được sử dụng để cung cấp giá trị tham số cho bài kiểm tra đơn vị. Chú thích @Parameters phải trả về List []. Tham số này sẽ được truyền vào hàm tạo lớp dưới dạng một đối số.

@RunWith (value = Parameterized.class)lớp công khai JunitTest {số privateint;public JunitTest6 (số int){this.number = số;}@Thông sốpublic static Collection  data (){Đối tượng [] [] data = new Đối tượng [] [] {{1}, {2}, {3}, {4}};returnArrays.asList (dữ liệu);}@Kiểm trapublic void tham sốTest (){System.out.println ("Số được tham số hóa là: + number);}}

Sử dụng TestNG

Trong TestNG, tệp XML hoặc "@DataProvider" được sử dụng để cung cấp một tham số cho thử nghiệm.

Ở đây, chú thích @Parameters được khai báo trong phương thức, cần một tham số để kiểm tra. Dữ liệu được sử dụng làm tham số sẽ cung cấp trong các tệp cấu hình XML của TestNG. Bằng cách làm này, chúng tôi có thể sử dụng lại một Trường hợp thử nghiệm duy nhất với các tập dữ liệu khác nhau và chúng tôi có thể nhận được các kết quả khác nhau.

lớp công khai Test1 {@Kiểm tra@Parameters (value = "number")public void parameterTest (int number){System.out.println ("Số được tham số hóa là: + number);}}

Xem tệp xml dưới đây sẽ được sử dụng cho lớp trên:

Tóm lược :

Chúng tôi đã xem so sánh JUnit4 và TestNG chi tiết. Chúng tôi cũng thấy cả hai đều tương tự nhau ngoại trừ kiểm tra tham số hóa và kiểm tra phụ thuộc. Tóm lại, chúng ta có thể nói, dựa trên tính linh hoạt và yêu cầu, chúng ta có thể chọn bất kỳ một trong số chúng cho Unit Testing.