Trang Chủ Tài chính Cá nhân Sử dụng JUnit - núm vú

Sử dụng JUnit - núm vú

Mục lục:

Video: Hướng dẫn cài đặt và sử dụng JUnit Test 2025

Video: Hướng dẫn cài đặt và sử dụng JUnit Test 2025
Anonim

JUnit là một khuôn khổ chuẩn để thử nghiệm các đơn vị Java (nghĩa là các lớp Java). JUnit có thể được tự động để lấy một số công việc ra khỏi thử nghiệm.

Hãy tưởng tượng bạn đã tạo ra một kiểu enum với ba giá trị: GREEN, YELLOW, và RED. Ví dụ 1 có chứa mã:

Listing 1

enum SignalColor {GREEN, YELLOW, RED}

Một đèn giao thông có trạng thái (tên màu sắc của đèn giao thông).

public class TrafficLight {Trạng thái SignalColor = SignalColor. RED;

Nếu bạn biết trạng thái hiện tại của đèn giao thông, bạn có thể quyết định trạng thái tiếp theo của đèn giao thông là gì.

public void nextState () {switch (state) {trường hợp RED: state = SignalColor. MÀU XANH LÁ; phá vỡ; case YELLOW: state = SignalColor. RED; phá vỡ; trường hợp GREEN: state = SignalColor. MÀU VÀNG; phá vỡ; mặc định: state = SignalColor. RED; break;}}

Bạn cũng có thể thay đổi trạng thái của đèn giao thông theo một số thời gian nhất định:

Liệt kê 2

public class TrafficLight {Trạng thái SignalColor = SignalColor. RED; public void nextState () {switch (state) {trường hợp RED: state = SignalColor. MÀU XANH LÁ; phá vỡ; case YELLOW: state = SignalColor. RED; phá vỡ; trường hợp GREEN: state = SignalColor. MÀU VÀNG; phá vỡ; mặc định: state = SignalColor. RED; }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} Bây giờ bạn đã có thể tiếp tục viết code,, gọi phương thức nextState và thay đổi trong Liệt kê 2. Sau đó, sau vài tháng mã hóa, bạn sẽ tạm dừng để kiểm tra công việc của mình.

Và thật bất ngờ! Các bài kiểm tra của bạn sẽ thất bại thảm hại! Bạn không nên trì hoãn việc kiểm tra trong hơn một hai ngày. Kiểm tra sớm và kiểm tra thường xuyên!

Một triết lý về kiểm tra cho biết bạn nên kiểm tra từng đoạn code ngay khi bạn viết nó. Tất nhiên, cụm từ "đoạn code" không có vẻ khoa học. Nó sẽ không làm cho các nhà phát triển đi bộ xung quanh nói về "chunk-of-code thử nghiệm" mà họ đã làm vào chiều nay. Sẽ tốt hơn nếu gọi mỗi đoạn mã

đơn vị

và giúp các nhà phát triển nói về

đơn vị kiểm nghiệm . Đơn vị xét nghiệm phổ biến nhất là lớp học. Vì vậy, một nhà phát triển Java điển hình kiểm tra mỗi lớp ngay khi mã của lớp được viết. Vậy bạn làm thế nào để kiểm tra một lớp học? Một người mới có thể kiểm tra lớp TrafficLight bằng cách viết thêm một lớp - một lớp có chứa một phương thức chính. Phương thức chính tạo ra một thể hiện của TrafficLight, gọi phương thức nextState và thay đổi, và hiển thị các kết quả.Người mới bắt đầu kiểm tra kết quả và so sánh chúng với một số giá trị mong đợi. Sau khi viết các phương pháp chính cho hàng chục, hàng trăm hoặc thậm chí hàng ngàn lớp, người mới bắt đầu trở nên mệt mỏi với các quy trình kiểm thử và tìm cách tự động hóa quy trình kiểm tra. Mệt mỏi hay không, một nhà phát triển có thể thử giải mã các bài kiểm tra bằng tay khác của nhà phát triển. Nếu không có bất kỳ tiêu chuẩn hoặc hướng dẫn để xây dựng các bài kiểm tra, đọc và hiểu các bài kiểm tra của nhà phát triển khác có thể khó khăn và tẻ nhạt.

Vì vậy, JUnit đến để giải cứu!.

Để tìm hiểu cách Eclipse tự động hóa việc sử dụng JUnit, hãy thực hiện theo các bước sau:

Tạo một dự án Eclipse chứa Danh sách 1 và 2.

Trong Windows, nhấp chuột phải vào TrafficLight của Package Explorer. java chi nhánh. Trên máy Mac, hãy nhấp vào kiểm soát của gói TrafficLight của Package Explorer. java chi nhánh.

Một menu ngữ cảnh xuất hiện.

  1. Trong trình đơn ngữ cảnh, chọn New → JUnit Test Case.

  2. Kết quả là hộp thoại Thử nghiệm JUnit Mới xuất hiện.

    Kích Next ở dưới hộp thoại New JUnit Test Case.

  3. Kết quả là bạn sẽ thấy trang thứ hai của hộp thoại Thử nghiệm JUnit Mới. Trang thứ hai liệt kê các phương thức thuộc (trực tiếp hoặc gián tiếp) đến lớp TrafficLight.

    Đặt một dấu kiểm vào hộp kiểm có gắn nhãn Traffic Light.

  4. Kết quả là Eclipse đặt dấu kiểm vào hộp kiểm

    nextState ()

  5. thay đổi (int) . Nhấp vào Kết thúc ở cuối hộp thoại Thử nghiệm JUnit Mới. JUnit không chính thức là một phần của Java. Thay vào đó, bạn sẽ có các lớp và phương pháp riêng để giúp bạn tạo ra các bài kiểm tra cho mã của bạn. Sau khi bạn nhấp vào Kết thúc, Eclipse sẽ hỏi bạn có muốn bao gồm các lớp và phương pháp JUnit như một phần của dự án của bạn hay không. Chọn Thực hiện Hành động Sau đây và thêm Thư viện JUnit 4 vào Đường dẫn Xây dựng. Sau đó nhấn OK.

  6. Eclipse đóng hộp thoại và dự án của bạn có một thương hiệu mới TrafficLightTest. tập tin java. Mã của tệp được hiển thị trong Liệt kê 3.

    Mã trong Liệt kê 3 chứa hai bài kiểm tra, và cả hai kiểm tra đều có các cuộc gọi đến một phương pháp không báo tiếng xấu. Eclipse muốn bạn thêm mã để thực hiện các bài kiểm tra này vượt qua.

  7. Loại bỏ các cuộc gọi đến phương pháp không thành công. Thay cho các cuộc gọi phương thức không thành công, hãy nhập mã được in đậm trong Liệt kê 4.

    Trong Package Explorer, nhấp chuột phải (trong Windows) hoặc kiểm soát (trên máy Mac) trên TrafficLightTest. java chi nhánh. Trong trình đơn ngữ cảnh kết quả, chọn Run As → JUnit Test.

    Eclipse có thể có nhiều hơn một khuôn khổ thử nghiệm JUnit trên tay áo của nó. Nếu vậy, bạn có thể thấy một hộp thoại giống như dưới đây. Nếu bạn chọn, hãy chọn Trình khởi chạy JUnit Eclipse, và sau đó nhấp vào Ok.

  8. Kết quả là Eclipse chạy TrafficLightTest của bạn. java chương trình. Eclipse hiển thị kết quả của quá trình chạy trước Package Explorer của chính nó. Kết quả cho thấy không có lỗi và không có thất bại. Whew!

  9. Listing 3

    import static org junit. Xác nhận. *; nhập khẩu org. junit. Kiểm tra; lớp công khai TrafficLightTest {@Test public void testNextState () {fail ("Chưa được triển khai");} @Test void testChange () {thất bại ("Chưa được triển khai");}}

    Liệt kê 4

import static org.junit. Xác nhận. *; nhập khẩu org. junit. Kiểm tra; lớp công khai TrafficLightTest {@Kiểm tra công khai void testNextState () {

Ánh sáng giao thông = new TrafficLight ();

assertEquals (SignalColor RED, trạng thái ánh sáng);

ánh sáng. nextState (); assertEquals (SignalColor GREEN, trạng thái ánh sáng); ánh sáng. nextState (); assertEquals (SignalColor. YELLOW, light state state); ánh sáng. nextState (); assertEquals (SignalColor RED, trạng thái ánh sáng); } @Giấy test void testChange () { Ánh sáng giao thông = new TrafficLight (); ánh sáng. thay đổi (5); assertEquals (SignalColor. YELLOW, light state state); }} Khi bạn chọn Run As → JUnit Test, Eclipse không tìm kiếm một phương pháp chính. Thay vào đó, Eclipse tìm các phương pháp bắt đầu với @Test và những thứ khác. Eclipse thi hành từng phương thức @Test. Những điều như @Test là các chú thích Java

Liệt kê 4 chứa hai phương thức @Test: testNextState và testChange. Phương pháp testNextState đặt phương thức TrafficState nextState vào bài kiểm tra. Tương tự, phương pháp testChange flexes các cơ chế của phương pháp thay đổi TrafficLight. Xem xét các mã trong phương pháp testNextState. Phương thức testNextState lặp đi lặp lại phương thức nextState của lớp TrafficLight và phương thức assertEquals của JUnit. Phương pháp assertEquals mất hai tham số: giá trị kỳ vọng và giá trị thực. Trong cuộc gọi assertEquals trên cùng, giá trị dự kiến ​​là SignalColor. RED. Bạn mong đợi đèn giao thông là RED vì, trong Ví dụ 2, bạn khởi tạo trạng thái của ánh sáng với giá trị SignalColor. RED.

Trong cuộc gọi assertEquals trên cùng, giá trị thực tế là nhẹ. (màu sắc thực sự được lưu trữ trong biến trạng thái của đèn giao thông).

Nếu giá trị thực tế bằng với giá trị kỳ vọng, cuộc gọi đến assertEquals sẽ qua và JUnit tiếp tục thực hiện các câu lệnh trong phương pháp testNextState.

  • Nhưng nếu giá trị thực tế khác với giá trị dự kiến, các assertEquals không thành công và kết quả của lần chạy hiển thị thất bại. Ví dụ, xem xét điều gì xảy ra khi bạn thay đổi giá trị mong đợi trong cuộc gọi assertEquals đầu tiên trong Liệt kê 4:

  • @Giấy kiểm tra void testNextState () {ánh sáng TrafficLight = TrafficLight mới (); assertEquals (SignalColor. Màu vàng, trạng thái ánh sáng);

Ngay sau khi xây dựng, màu của đèn giao thông là RED, chứ không phải YELLOW. Vì vậy, phương pháp testNextState chứa khẳng định sai và kết quả của việc chạy Chạy → JUnit giống như thẻ báo cáo xấu của một đứa trẻ.

Có testNextState trước khi testChange trong Liệt kê 4

không đảm bảo

rằng JUnit sẽ thực hiện testNextState trước khi thực hiện testChange. Nếu bạn có ba phương pháp @Test, JUnit có thể thực thi chúng từ trên cùng sang dưới cùng, từ dưới đáy đến trên cùng, từ phương pháp trung bình đến đỉnh trên cùng đến dưới cùng, hoặc theo bất kỳ thứ tự nào. JUnit thậm chí có thể tạm dừng ở giữa một bài kiểm tra để thực hiện các phần của bài kiểm tra khác. Đó là lý do tại sao bạn không bao giờ nên giả định về kết quả của một bài kiểm tra khi bạn viết bài kiểm tra khác.

Bạn có thể muốn các câu lệnh nhất định được thực thi trước khi bắt đầu bất kỳ cuộc kiểm tra nào.Nếu bạn làm như vậy, hãy đặt các câu lệnh đó vào một phương pháp có tên setUp và đưa ra lời nói đầu với một chú thích @Trên trước. (Xem hộp kiểm setUp () trong hình ở Bước 3 trong Liệt kê 2, ở trên.)

Đây là tin tức: Không phải tất cả các phương pháp assertEquals đều được tạo ra bằng nhau! Hãy tưởng tượng thêm một lớp Driver vào mã dự án của bạn. "Trình điều khiển lớp học" không có nghĩa là một trình điều khiển máy in hoặc trình điều khiển cọc. Nó có nghĩa là một người lái xe hơi - một chiếc xe đang tiếp cận ánh sáng giao thông của bạn. Để biết chi tiết, xem Liệt kê 5. Liệt kê 5 trình điều khiển lớp công cộng (vận tốc gấp đôi công cộng) (đèn giao thông) {switch (light state) {trường hợp RED: return 0. 0; case YELLOW: return 10. 0; trường hợp GREEN: return 30. 0; mặc định: return 0. 0;}}}

Khi ánh sáng màu đỏ, vận tốc của người lái xe là 0. 0. Khi ánh sáng màu vàng, chiếc xe đang chậm lại đến độ an toàn 10. 0. Khi ánh sáng màu xanh lá cây, du lịch trên biển xe với tốc độ 30. 0.

(trong ví dụ này, các đơn vị của vận tốc không thành vấn đề. Họ có thể dặm một giờ, km mỗi giờ, hoặc bất cứ điều gì. cách duy nhất nó quan trọng là nếu xe ô tô ở Boston hoặc thành phố New York.Trong trường hợp đó, vận tốc cho màu vàng nên cao hơn nhiều so với vận tốc cho GREEN, và vận tốc cho RED không nên là 0. 0)

Để tạo các bài kiểm tra JUnit cho Driver class, theo các bước từ 1 đến 9 được liệt kê trước đây trong bài này, nhưng hãy chắc chắn thực hiện các thay đổi sau:

Trong Bước 2, kích chuột phải hoặc nhấn đúp Control driver. java thay vì TrafficLight. java chi nhánh.

Trong Bước 5, đánh dấu kiểm vào nhánh Người lái xe.

Ở bước 8, loại bỏ các cuộc gọi phương thức không thành công để tạo ra lớp DriverTest được hiển thị trong Liệt kê 6. (Đoạn mã bạn gõ được in đậm)

  • Liệt kê 6

  • import static org. junit. Xác nhận. *; nhập khẩu org. junit. Kiểm tra; lớp học công cộng DriverTest {@Test public void testVelocity () {

  • ánh sáng TrafficLight = new TrafficLight ();

ánh sáng. thay đổi (7);

Người lái xe = lái xe mới (); assertEquals (30, 0, trình điều khiển vận tốc (ánh sáng), 0. 1); }} Nếu mọi việc suôn sẻ, bài kiểm tra JUnit sẽ chuyển qua màu bay. (Để được chính xác hơn, JUnit đi với màu xanh lá cây!) Vì vậy, chạy của DriverTest không phải là mới hoặc thú vị. Điều thú vị là cuộc gọi đến assertEquals trong Liệt kê 6. Khi bạn so sánh hai giá trị tăng gấp đôi trong một chương trình Java, bạn không có quyền mong đợi sự bình đẳng trên mặt mũi. Đó là, một trong hai giá trị có thể là 30. 000000000 trong khi giá trị tăng gấp đôi khác là gần 30. 000000001. Một máy tính chỉ có 64 bit để lưu trữ mỗi giá trị tăng gấp đôi, và không chính xác leo ở đây và ở đó. Vì vậy, trong JUnit, phương pháp assertEquals để so sánh các giá trị tăng gấp đôi có một tham số thứ ba. Tham số thứ ba thể hiện phong cách lung lay. Trong Ví dụ 6, tuyên bố

assertEquals (30, 0, trình điều khiển. Velocity (light), 0. 1);

nói những điều sau đây: "Xác nhận rằng giá trị thực tế của lái xe. vận tốc (ánh sáng) nằm trong khoảng 0. 1 của giá trị dự kiến ​​30. 0. Nếu đúng như vậy, khẳng định đi qua. Nếu không, khẳng định không thành công. "

Khi bạn gọi assertEquals cho các giá trị tăng gấp đôi, chọn một lề sai số có thể rất khôn lanh.Những con số này minh hoạ cho những thứ có thể sai.

Ở đây, lề của bạn lỗi là quá nhỏ.

Ở đó, biên độ lỗi của bạn quá lớn.

May mắn thay, trong ví dụ này, DriverMax 0. 1 là một cược rất an toàn. Đây là lý do tại sao:

Khi kiểm tra assertEquals thất bại, nó không thành công nhiều hơn 0. 1.

Thất bại có nghĩa là có người lái xe. giá trị vận tốc (ánh sáng) như 0. 0 hoặc 10. 0.

Trong ví dụ này, khi bài kiểm tra assertEquals vượt qua, nó có thể đại diện cho sự bình đẳng hoàn toàn, trên mặt mũi.

  • Giá trị trình điều khiển. vận tốc (ánh sáng) đến trực tiếp từ sự trở lại 30. 0 mã trong Ví dụ 5. Không có số học nào có liên quan. Vì vậy, giá trị của trình điều khiển. vận tốc (ánh sáng) và dự kiến ​​30. Giá trị 0 phải giống hệt nhau (hoặc gần như chính xác).

Sử dụng JUnit - núm vú

Lựa chọn của người biên tập

Cách lọc một nguồn dữ liệu kết hợp trong Word 2013 - núm vú

Cách lọc một nguồn dữ liệu kết hợp trong Word 2013 - núm vú

Trong tài liệu Word 2013, lọc một nguồn dữ liệu loại trừ các bản ghi nhất định (hoặc xem một cách khác, nó chỉ bao gồm một số bản ghi) dựa trên một hoặc nhiều tiêu chí mà bạn chỉ định. Ví dụ: bạn có thể muốn chỉ bao gồm các địa chỉ từ một thành phố hoặc tiểu bang nhất định, hoặc chỉ những địa chỉ phù hợp với địa chỉ ...

Cách Tìm Stuff bạn không thể gõ trong Word 2007 - núm vú

Cách Tìm Stuff bạn không thể gõ trong Word 2007 - núm vú

Word 2007 giúp tìm các ký tự đặc biệt, không in được trong tài liệu của bạn. Sử dụng hộp thoại Tìm và Thay thế, bạn có thể tìm kiếm những thứ như tab, dấu phân cách, dấu thập phân, khoảng trống và những thứ khác mà bạn không thể tạo ra từ bàn phím. Gọi hộp thoại Tìm và Thay thế. Nếu cần thiết, hãy nhấp vào nút Thêm để ...

Cách Tìm Định dạng trong Word 2007 - núm vú

Cách Tìm Định dạng trong Word 2007 - núm vú

Bạn có thể sử dụng lệnh Tìm để đánh cắp tài liệu Word 2007 của bạn để định dạng thông tin. Ví dụ, nếu bạn chỉ muốn tìm những trường hợp của từ lie có chữ đậm, bạn có thể làm điều đó. Ví dụ này tìm kiếm trứng ngỗng văn bản với kích thước phông chữ là 24 điểm trong một ...

Lựa chọn của người biên tập

Làm thế nào để Thoả Nhận Hợp Đồng Máy chủ Web - núm vú

Làm thế nào để Thoả Nhận Hợp Đồng Máy chủ Web - núm vú

Trên thực tế, đa số của máy chủ web không hoàn lại tiền nếu bạn để lại trước khi thời hạn hợp đồng của bạn kết thúc. Trong thực tế, nếu bạn có một thỏa thuận giá rẻ trên hosting của bạn, nó có thể có các điều khoản và điều kiện yêu cầu bạn xem ra thời hạn của hợp đồng hoặc trả tiền cho đặc quyền ...

Cách quản lý tập tin với Control Panel của Website - núm vú

Cách quản lý tập tin với Control Panel của Website - núm vú

Bảng điều khiển của bạn cung cấp cho bạn một cách tiện dụng để quản lý các tệp của bạn mà không cần máy chủ FTP được lưu trữ trên web. Đây là một cái gì đó phổ biến cho hầu hết các bảng điều khiển nhưng đôi khi có nhãn khác nhau một chút. Ví dụ, hầu hết các máy chủ gọi nó là File Manager, nhưng DreamHost gọi nó là webFTP. Sử dụng Trình quản lý Tệp là

Cách Quản lý Người dùng với Quản lý Máy chủ Web - núm vú

Cách Quản lý Người dùng với Quản lý Máy chủ Web - núm vú

Cây thư mục riêng trên máy chủ nơi tập tin của nó được giữ. Là chủ sở hữu của máy chủ, bạn có quyền truy cập superuser cho toàn bộ máy chủ, có nghĩa là bạn có thể xem tất cả các tệp tin của chủ tài khoản khác. Tất cả các tập tin tài khoản được lưu giữ trong các thư mục bên trong một thư mục gọi là home, ...

Lựa chọn của người biên tập

Tạo một Cột trang web mới trong SharePoint 2010 - núm vú

Tạo một Cột trang web mới trong SharePoint 2010 - núm vú

SharePoint 2010 có một thực thể cột trang web cho phép bạn để sử dụng lại các cột trên nhiều danh sách. Khi bạn tạo một cột mới trong danh sách của mình, bạn tạo ra một cột danh sách - có nghĩa cột chỉ có thể được sử dụng trong danh sách đó. Các cột của trang web được tạo ở cấp cao nhất của trang web nhóm của bạn và có thể ...

Tạo Tuỳ chỉnh Chủ đề cho SharePoint 2010 Sử dụng PowerPoint - núm vú

Tạo Tuỳ chỉnh Chủ đề cho SharePoint 2010 Sử dụng PowerPoint - núm vú

Cho nhiều nhà thiết kế trang web và chủ sở hữu SharePoint 2010 , ý tưởng để có thể tùy chỉnh chủ đề của họ là rất thú vị. Mặt khác, nhiệm vụ chọn nhiều màu có thể có vẻ khó chịu với những người biết họ thích gì khi họ nhìn thấy nó nhưng gặp sự cố khi lựa chọn. Nếu bạn ở trong ...

Tạo trang web mới trong SharePoint 2010 - núm vú

Tạo trang web mới trong SharePoint 2010 - núm vú

Bạn có thể tạo một bộ sưu tập trang web mới trong SharePoint theo hai cách - bằng cách sử dụng Quản trị Trung tâm hoặc thông qua Tạo trang web Tự phục vụ. Sử dụng Quản trị Trung tâm đòi hỏi các quyền được cấp phép, thường là hạn chế đối với nhân viên CNTT. Tạo trang web tự tạo là một tính năng của SharePoint cho phép CNTT trao quyền cho việc tạo bộ sưu tập trang web mới ...