Trong trường hợp bình thường, bất cứ khi nào bạn xác định được bất kỳ lỗi nào trong quá trình thực hiện kiểm tra, bạn sẽ dừng kiểm tra, sửa lỗi và chạy lại kiểm tra.
Nhưng JUnit có một cách tiếp cận hơi khác. Với trình thu thập lỗi JUnit, bạn vẫn có thể tiếp tục thực hiện kiểm tra ngay cả sau khi phát hiện ra sự cố hoặc kiểm tra không thành công. Bộ thu thập lỗi thu thập tất cả các đối tượng lỗi và báo cáo nó chỉ một lần sau khi quá trình kiểm tra kết thúc.
Trong hướng dẫn này, bạn sẽ học-
- Trình thu thập lỗi trong JUnit là gì?
- @Rule trong jUnit là gì?
- Ví dụ sử dụng ErrorCollector
- Lợi ích của JUnit ErrorCollector
Tại sao sử dụng Trình thu thập lỗi?
Trong khi viết tập lệnh thử nghiệm, bạn muốn thực hiện tất cả các thử nghiệm ngay cả khi bất kỳ dòng mã nào bị lỗi do lỗi mạng, lỗi xác nhận hoặc bất kỳ lý do nào khác. Trong trường hợp đó, bạn vẫn có thể tiếp tục thực thi tập lệnh thử nghiệm bằng cách sử dụng một tính năng đặc biệt do JUnit cung cấp, được gọi là "trình thu thập lỗi".
Đối với điều này, JUnit sử dụng chú thích @Rule được sử dụng để tạo một đối tượng của bộ thu lỗi. Khi đối tượng cho bộ thu thập lỗi được tạo, bạn có thể dễ dàng thêm tất cả các lỗi vào đối tượng bằng cách sử dụng phương thức addError (Lỗi có thể ném). Như bạn đã biết, Throwable đó là siêu lớp của lớp Ngoại lệ và Lỗi trong Java. Khi bạn thêm lỗi theo cách này, những lỗi này sẽ được ghi vào kết quả kiểm tra JUnit.
Lợi ích của việc thêm tất cả các lỗi trong Trình thu thập lỗi là bạn có thể xác minh tất cả các lỗi cùng một lúc. Ngoài ra, nếu tập lệnh bị lỗi giữa chừng, nó vẫn có thể tiếp tục thực thi nó
Lưu ý : Trong trường hợp sử dụng khối khẳng định hoặc thử / bắt đơn giản, bạn sẽ không thể sử dụng phương pháp trình thu thập lỗi.
Mã mẫu
Để hiểu thêm về Trình thu thập lỗi, hãy xem ví dụ mã dưới đây trình bày cách tạo đối tượng Trình thu thập lỗi và thêm tất cả các lỗi trong đối tượng đó để theo dõi sự cố:
gói guru99.junit;nhập org.junit.Rule;nhập khẩu org.junit.Test;nhập org.junit.rules.ErrorCollector;public class ErrorCollectorExample {@Qui địnhpublic ErrorCollector collector = new ErrorCollector ();@Kiểm traví dụ về public void () {collector.addError (new Throwable ("Có lỗi ở dòng đầu tiên"));collector.addError (new Throwable ("Có lỗi ở dòng thứ hai"));collector.checkThat (getResults (),not (containsString ("đây là lỗi")));// tất cả các dòng mã sẽ thực thi và cuối cùng, một lỗi kết hợp sẽđược đăng nhập.}}
@Rule trong jUnit là gì?
JUnit cung cấp loại xử lý đặc biệt của các bài kiểm tra, Test Case hoặc bộ kiểm thử bằng cách sử dụng chú thích @rule . Sử dụng @rule, bạn có thể dễ dàng thêm hoặc xác định lại hành vi của bài kiểm tra.
Có một số quy tắc tích hợp được cung cấp bởi API JUnit mà người thử nghiệm có thể sử dụng hoặc thậm chí bạn có thể viết quy tắc của riêng chúng tôi.
Xem dòng mã dưới đây, cho biết cách sử dụng chú thích @rule cùng với Trình thu thập lỗi:
@Qui địnhpublic ErrorCollector collector = new ErrorCollector ();
Ví dụ sử dụng ErrorCollector
Để hiểu bộ thu lỗi, hãy tạo một lớp và một quy tắc để thu thập tất cả các lỗi. Bạn sẽ thêm tất cả các lỗi bằng addError (có thể ném) tại đây.
Xem mã bên dưới chỉ tạo một quy tắc không có gì khác ngoài việc tạo "đối tượng Trình thu thập lỗi". Còn được sử dụng để thêm tất cả các lỗi nhằm báo cáo sự cố ở cuối:
ErrorCollectorExample.java
gói guru99.junit;nhập khẩu org.junit.Assert;nhập org.junit.Rule;nhập khẩu org.junit.Test;nhập org.junit.rules.ErrorCollector;public class ErrorCollectorExample {@Qui địnhpublic ErrorCollector collector = new ErrorCollector ();@Kiểm traví dụ về public void () {collector.addError (new Throwable ("Có lỗi ở dòng đầu tiên"));collector.addError (new Throwable ("Có lỗi ở dòng thứ hai"));System.out.println ("Xin chào");thử {Assert.assertTrue ("A" == "B");} bắt (Có thể ném t) {collector.addError (t);}System.out.println ("Thế giới !!!!");}}
TestRunner.java
Hãy thêm lớp thử nghiệm ở trên trong một trình chạy thử nghiệm và thực thi nó để thu thập tất cả các lỗi. Xem mã dưới đây:
gói guru99.junit;nhập org.junit.runner.JUnitCore;nhập org.junit.runner.Result;nhập org.junit.runner.notification.Failure;lớp công khai TestRunner {public static void main (String [] args) {Kết quả kết quả = JUnitCore.runClasses (ErrorCollectorExample.class);for (Lỗi không thành công: result.getFailures ()) {System.out.println (fail.toString ());}System.out.println ("Kết quả ==" + result.wasSuccessful ());}}
Đầu ra:
Xem dấu vết lỗi theo dõi tất cả các lỗi ở một nơi:
Lợi ích của JUnit ErrorCollector
Bạn có thể sử dụng xác nhận JUnit để xác thực chức năng hoặc GUI, ví dụ:
- khẳng địnhEquals (Thông điệp chuỗi, Đối tượng mong đợi, Đối tượng thực tế) so sánh rằng hai đối tượng là bằng nhau.
- Tương tự, khẳng địnhTrue (điều kiện Boolean) khẳng định rằng một điều kiện là đúng.
Sử dụng xác nhận, kiểm tra xác nhận trở nên dễ dàng. Nhưng một vấn đề chính là việc thực thi thử nghiệm sẽ dừng lại ngay cả khi một xác nhận duy nhất không thành công.
Tính liên tục của thử nghiệm và xử lý phục hồi là rất quan trọng để thử nghiệm tự động hóa thành công. Trình thu thập lỗi là cách tốt nhất để xử lý các loại tình huống như vậy.
Tóm tắt :
- Trình thu thập lỗi Junit cho phép kiểm tra tiếp tục ngay cả sau khi tìm thấy sự cố đầu tiên và kiểm tra không thành công khi kết thúc
- Trình thu thập lỗi thu thập tất cả các đối tượng lỗi và chỉ báo cáo nó, sau cùng, quá trình thực thi kiểm tra kết thúc
- Lợi ích của việc thêm tất cả các lỗi trong Trình thu thập lỗi là bạn có thể xác minh tất cả các lỗi cùng một lúc
- Trình thu thập lỗi chỉ cần thêm lỗi bằng phương pháp addError (lỗi có thể ném) được cung cấp bởi ErrorCollector.java.