Báo cáo: Junit công cụ Test Driven Development

24 1.4K 5
Báo cáo: Junit  công cụ Test Driven Development

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

JUnit là một framework đơn giản dùng cho việc tạo các unit testing tự động, và chạy các test có thể lặp đi lặp lại. Nó chỉ là một phần của họ kiến trúc xUnit cho việc tạo các unit testing. JUnit là một chuẩn trên thực tế cho unit testing trong Java. JUnit về nguồn gốc được viết bởi 2 tác giả Erich Gamma và Kent Beck

MỤC LỤC Trang I.Giới thiệu đề tài…………………………………………………….3 I.1.Giải vấn đề……………………………………………… .3 II.1 Cách thức giải trình bày vấn đề…………………… II.1.1.Phân chia công việc…………………………………………3 II.1.2.Hình thức tìm hiểu………………………………………… II.1.3.Hình thức báo cáo………………………………………… .4 II.2.Kết nghiên cứu…………………………………………… II.2.1.xUnit framework? .4 II.2.2.Lịch sử phát triển Junit…………………………………… .5 II.2.3.Kiến trúc tổng quan…………………………………………5 II.2.4.Tại phải viết test suit? ……………………………… II.2.5.Các viết TestCase…………………………………………7 II.2.6.Các phương thức Assert()………………………………… .9 II.2.7.Set Up Tear Down……………………………………….11 II.2.8.Test exception………………………….……………….14 II.2.8.1.Xây dựng test exception………… ………………14 II.2.8.2.Kiểm tra sâu ngoại lệ………… …………….15 II.2.9.Junit Eclipse………………………………………… 16 II.2.9.1.Thêm thư viện Junit vào project………………… 16 II.2.9.2.Viết TestCase Eclipse………………………16 II.2.9.3.Chạy testcase Eclipse…………………….20 II.2.10.Giới thiệu số công cụ testing khác………………….21 II.2.10.1.Cactus………………………………………………21 II.2.10.2.HTTPUnit………………………………………… 21 II.2.10.3.Nunit……………………………………………… 22 III.Kết luận………………………………………………………… 23 III.1.Kết đề tài:……………………………………………… 23 III.2.Hướng nghiên cứu phát triển……………………………….23 IV.Tài liệu tham khảo…………………………………………….23 I.Giới thiệu đề tài -Tên đề tài: ”Junit-công cụ Test-Driven-Development” Giới thiệu tổng quát Junit JUnit framework đơn giản dùng cho việc tạo unit testing tự động, chạy test lặp lặp lại. Nó phần họ kiến trúc xUnit cho việc tạo unit testing. JUnit chuẩn thực tế cho unit testing Java. JUnit nguồn gốc viết tác giả Erich Gamma Kent Beck JUnit tải xuống từ địa http://www.junit.org. JUnit có đặc điểm đáng lưu tâm sau: • Xác nhận (assert) việc kiểm tra kết mong đợi • Các Test Suite cho phép dễ dàng tổ chức chạy test • Hỗ trợ giao diện đồ họa giao diện dòng lệnh Các test case JUnit lớp Java, lớp bao gồm hay nhiều phương thức unit testing, test lại nhóm thành Test Suite. Mỗi phương thức test JUnit phải thực thi nhanh chóng. Tốc độ điều tối quan trọng nhiều test viết tích hợp vào bên trình xây dựng phần mềm, cần phải tốn nhiều thời gian cho việc chạy toàn Test Suite. Các lập trình viên không muốn bị ngắt quãng khoãng thời gian dài test chạy, test mà chạy lâu có nhiều khả lập trình viên bỏ qua bước không phần quan trọng này. Các test JUnit test chấp nhận hay thất bại, test thiết kế để chạy mà không cần có can thiệp người. Từ thiết kế thế, bạn thêm test vào trình tích hợp xây dựng phần mềm cách liên tục test chạy cách tự động II.Giải vấn đề II.1 Cách thức giải trình bày vấn đề II.1.1.Phân chia công việc Nguyễn Khánh Thiện 1.xUnit framework? 2.Lịch sử phát triển Junit 3.Kiến trúc tổng quan 4.Tại phải tạo test suit? Vũ Đức Luận: 5.Cách viết Testcase 6.Các phương thức Assert 7.Set Up Tear Down Nguyễn Tiến Đạt: 8.Test Exception 9.Junit in Eclipse 10.Các công cụ Testing khác Viết báo cáo: Vũ Đức Luận II.1.2.Hình thức tìm hiểu -Thao khảo tài liệu diễn đàn: testing.vn -Thao khảo sách viết Junit -Xây dựng demo mô tả vấn đề trình bày II.1.3.Hình thức báo cáo: -Thuyết trình slide: theo phân công cho thành viên nhóm -Viết báo cáo nộp sau thuyết trình II.2.Kết nghiên cứu II.2.1xUnit framework?  Khi phát triển phần mềm giai đoạn kiểm thử phần mềm giai đoạn bắt buộc . Và loại testing Unit testing , liên quan đến việc kiểm tra đơn vị phần mềm . Những đoạn code unit testing hướng tới mục tiêu đơn vị đối tượng cụ thể , kiểm tra đầu vào đầu , chi tiết thời điểm cụ thể .  xUnit framework họ kiến trúc xUnit framwork với ngôn ngữ lập trình tảng lập trình khác . Hay nói cách khác xUnit framework họ unit testing frameworks với ngôn ngữ tảng lập trình khác .  Danh sách unit testing framework : Java ---- Junit framework . ASP ----- ASPUnit framework . MATLAB ----- mlunit framework . Objective-C ------ ObjcUnit framework . PHP ---- PHP Unit Testing Framework . C++ ---- CPUnit framework . Shell --- ShUnit framework . SQL --- SQLUnit framework …… II.2.2.Lịch sử phát triển Junit  JUnit framework đơn giản dùng cho việc tạo unit testing tự động, chạy test lặp lặp lại. Nó phần họ kiến trúc xUnit cho việc tạo unit testing. JUnit chuẩn thực tế cho unit testing Java. JUnit nguồn gốc viết tác giả Erich Gamma Kent Beck.  Vào năm 90 kỷ 20 , Kent Beck phát triển test xUnit cho Smalltalk .  Beck Gamma phát triển JUnit chuyến bay từ Zurich đến Washington, DC.  Từ Junit trở thành công cụ chuẩn cho Test-Driven Development Java .  Ngày , jUnit tích hợp sẵn Java IDEs (Eclipse, BlueJ, Jbuilder, DrJava) .  Ngày , jUnit tích hợp sẵn Java IDEs (Eclipse, BlueJ, Jbuilder, DrJava) . II.2.3.Kiến trúc tổng quan • JUnit test framework cung cấp cho gói lớp có sẵn cho phép viết phương thức test cách dễ dàng . • TestRunner chạy test trả kết Test Results • Các lớp chương trình test kế thừa lớp trừu tượng TestCase . • Khi viết Test Case cần biết hiểu lớp Assert class . • Một số định nghĩa mô hình tổng quát :  Test case : test case định nghĩa môi trường mà sử dụng để chạy nhiều test khác  TestSuite : testsuite chạy tập test case bao gồm nhiều test suite khác . test suite tổ hợp test . II.2.4.Tại phải tạo test suit?  Hiển nhiên bạn phải kiểm tra xem đoạn code bạn có hay không ? o Bạn xây dựng kiểm thử bao gồm nhiều test khác chạy thời gian .  Nhược điểm việc viết test suite : o Đó nhiều chương trình lập trình thêm .  Đúng , sử dụng framework có sẵn giúp giảm bớt trình lập trình . o Có nhiều ý kiến cho công việc không cần thiết tốn thời gian , thời gian làm công việc thêm .  Đó ý kiến sai lầm , Những thực nghiệm test suites giảm thời gian sửa lỗi nhiều thời gian dành cho việc xây dựng test suites .  Lợi ích việc viết test suite . o Làm giảm tổng số lỗi trình code . o Làm cho dòng code bạn trở lên dễ bảo trì tái sử dụng . II.2.5.Cách viết TestCase Bạn muốn viết unit test với JUnit. Việc bạn phải tạo lớp thừa kế từ lớp junit.framework.TestCase. Mỗi unit test đại diện phương thức testXXX() bên lớp lớp TestCase. Ta có lớp Person sau: 1. 2. public class Person { private String firstName; 3. private String lastName; 4. public Person(String firstName, String lastName) { 5. if (firstName == null && lastName == null) { 6. throw new IllegalArgumentException("Both names cannot be null"); 7. } 8. this.firstName = firstName; 9. this.lastName = lastName; 10. } 11. public String getFullName() { 12. String first = (this.firstName != null) ? this.firstName : "?"; 13. String last = (this.lastName != null) ? this.lastName : "?"; 14. return first + last; 15. } 16. public String getFirstName() { 17. return this.firstName; 18. } 19. public String getLastName() { 20. return this.lastName; 21. } 22. } Sau ta viết test case đơn giản để test số phương thức lớp 1. 2. import junit.framework.TestCase; public class TestPerson extends TestCase { 3. public TestPerson(String name) { 4. super(name); 5. } 6. /** 7. * Xac nhan rang name duoc the hien dung dinh dang 8. */ 9. public void testGetFullName() { 10. Person p = new Person("Aidan", "Burke"); 11. assertEquals("Aidan Burke", p.getFullName()); 12. } 13. /** 14. * Xac nhan rang nulls da duoc xu ly chinh xac 15. */ 16. public void testNullsInName() { 17. Person p = new Person(null, "Burke"); 18. assertEquals("? Burke", p.getFullName()); 19. p = new Person("Tanner", null); 20. assertEquals("Tanner ?", p.getFullName()); 21. } 22. } Lưu ý: unit test phương thức public tham số, bắt đầu tiếp đầu ngữ test. Nếu bạn không tuân theo quy tắc đặt tên JUnit không xác định phương thức test tự động. Để biên dịch TestPerson, phải khai báo gói thư viện junit biến đường môi trường classpath set classpath=%classpath%;.;junit.jar javac TestPerson Để chạy JUnit TestCase, ta có cách • Chạy với môi trường text, bạn gõ lệnh java junit.textui.TestRunner TestPerson • Chạy với môi trường đồ họa java junit.swingui.TestRunner TestPerson Chúng ta chạy trực tiếp TestCase mà không muốn kích hoạt test runner JUnit. Chúng ta thêm phương thức main() vào test case. Ví dụ: 1. 2. public class TestGame extends TestCase { … 3. public static void main(String [args) { 4. junit.textui.TestRunner.run(new TestSuite(TestGame.class)) 5. } 6. } II.2.6.Các phương thức Assert() Các phương thức assertXXX() dùng để kiểm tra điều kiện khác nhau.junit.framework.TestCase, lớp cha cho tất test case, thừa kế từ lớp junit.framework.Assert. Lớp định nghĩa nhiều phương thức assertXXX(). Các phương thức test hoạt động cách gọi phương thức này. Sau mô tả phương thức assertXXX() khác có lớp junit.framework.Assert. • assertEquals(): So sánh giá trị để kiểm tra nhau. Test chấp nhận giá trị • assertFalse(): Đánh giá biểu thức luận lý. Test chấp nhận biểu thức sai • assertNotNull(): So sánh tham chiếu đối tượng với null. Test chấp nhận tham chiếu đối tượng khác null • assertNotSame(): So sánh địa vùng nhớ tham chiếu đối tượng cách sử dụng toán tử ==. Test chấp nhận tham chiếu đến đối tượng khác • assertNull(): So sánh tham chiếu đối tượng với giá trị null. Test chấp nhận tham chiếu null • assertSame(): So sánh địa vùng nhớ t • • ham chiếu đối tượng cách sử dụng toán tử ==. Test chấp nhận tham chiếu đến đối tượng • assertTrue(): Đánh giá biểu thức luận lý. Test chấp nhận biểu thức • fail(): Phương thức làm cho test hành thất bại, phương thức thường sử dụng xử lý biệt lệ Mặc dù bạn cần sử dụng phương thức assertTrue() cho gần hầu hết test, nhiên việc sử dụng phương thức assertXXX() cụ thể làm cho test bạn dễ hiểu cung cấp thông điệp thất bại rõ ràng hơn. Tất phương thức bảng nhận vào String không bắt buộc làm tham số đầu tiên. Khi xác định, tham số cung cấp thông điệp mô tả test thất bại. Ví dụ: 1. 2. assertEquals(employeeA, employeeB); assertEquals(“Employees should be equal after the clone() operation.”, employeeA , employeeB). Phiên thứ ưa thích mô tả test thất bại, điều giúp cho việc sửa lỗi dễ dàng Thế unit test tốt? 10 Mỗi unit test nên kiểm tra phần cụ thể chức đó. Chúng ta không nên kết hợp nhiều test không liên quan vào phương thức testXXX() Ta có lớp Game sau 1. 2. public class Game { private Map ships = new HashMap(); 3. public Game() throws BadGameException { 4. } 5. public void shutdown() { 6. // dummy method 7. } 8. public synchronized Ship createFighter(String fighterId) { 9. Ship s = (Ship) this.ships.get(fighterId); 10. if (s == null) { 11. s = new Ship(fighterId); 12. this.ships.put(fighterId, s); 13. } 14. return s; 15. } 16. public boolean isPlaying() { 17. return false; 18. } 19. } 20. public class BadGameException extends Exception { 21. public BadGameException(String s) { 22. super(s); 23. } 24. } Sau ta viết đoạn test sau đây: 1. 2. public void testGame() throws BadGameException{ Game game = new Game(); 3. Ship fighter = game.createFighter(“001”); 4. assertEquals("Fighter did not have the correct identifier", "001", this.fighter. getId()); 11 5. Ship fighter2 = this.game.createFighter("001"); 6. assertSame("createFighter with same id should return same object", fighter, figh ter2); 7. assertTrue("A new game should not be started yet", !this.game.isPlaying()); 8. } Đây thiết kế không tốt phương thức assertXXX() kiểm tra phần không liên quan chức năng. Nếu phương thức assertEquals() thất bại, phần lại test không thi hành. Khi xảy điều test khác có chức hay không Tiếp theo sửa test lại để kiểm tra khía cạnh khác trò chơi cách độc lập. 1. 2. public void testCreateFighter() { System.out.println("Begin testCreateFigher()"); 3. assertEquals("Fighter did not have the correct identifier", "001", this.fighter. getId()); 4. System.out.println("End testCreateFighter()"); 5. } 6. public void testSameFighters() { 7. System.out.println("Begin testSameFighters()"); 8. Ship fighter2 = this.game.createFighter("001"); 9. assertSame("createFighter with same id should return same object", this.fighter, fighter2); 10. System.out.println("End testSameFighters()"); 11. } 12. public void testGameInitialState() { 13. System.out.println("Begin testGameInitialState()"); 14. assertTrue("A new game should not be started yet", !this.game.isPlaying()); 15. System.out.println("End testGameInitialState()"); 16. } Với cách tiếp cận này, test thất bại không làm cho mệnh đề assertXXX() lại bị bỏ qua. Có thể bạn đặt câu hỏi có phương thức test chứa nhiều phương thứcassertXXX() hay không? Câu trả lời có. Nếu bạn cần kiểm tra dãy điều kiện test theo sau thất bại có test thất bại, bạn kết hợp nhiều phương thức assert vào test 12 II.2.7.Set Up Tear Down Hai phương thức setUp() tearDown() phần lớp junit.framework.TestCase Bằng cách sử dụng phương thức setUp tearDown. Khi sử dụng phương thức setUp() tearDown() giúp tránh việc trùng mã nhiều test chia sẻ phần khởi tạo dọn dẹp biến. JUnit tuân thủ theo dãy có thứ tự kiện chạy test. Đầu tiên, tạo thể test case ứng với phương thức test. Từ đó, bạn có phương thức test JUnit tạo thể test case. Vì lý đó, biến thể sử dụng để chia sẻ trạng thái phương thức test. Sau tạo xong tất đối tượng test case, JUnit tuân theo bước sau cho phương thức test: • Gọi phương thức setUp() test case • Gọi phương thức test • Gọi phương thức tearDown() test case Quá trình lặp lại phương thức test test case. Sau xem xét ví dụ 1. 2. public class Ship { private String id; 3. public Ship(String id) { 4. this.id = id; 5. } 6. public String getId() { 7. return this.id; 8. } 9. } 10. public class TestGame extends TestCase { 11. private Game game; 12. private Ship fighter; 13. public void setUp() throws BadGameException { 14. this.game = new Game(); 15. this.fighter = this.game.createFighter("001"); 16. } 13 17. public void tearDown() { 18. this.game.shutdown(); 19. } 20. public void testCreateFighter() { 21. System.out.println("Begin testCreateFigher()"); 22. assertEquals("Fighter did not have the correct identifier", 23. "001", this.fighter.getId()); 24. System.out.println("End testCreateFighter()"); 25. } 26. public void testSameFighters() { 27. System.out.println("Begin testSameFighters()"); 28. Ship fighter2 = this.game.createFighter("001"); 29. assertSame("createFighter with same id should return same object", 30. this.fighter, fighter2); 31. System.out.println("End testSameFighters()"); 32. } 33. public void testGameInitialState() { 34. System.out.println("Begin testGameInitialState()"); 35. assertTrue("A new game should not be started yet", 36. !this.game.isPlaying()); 37. System.out.println("End testGameInitialState()"); 38. } 39. } Thông thường bạn bỏ qua phương thức tearDown() unit test riêng tiến trình chạy tốn nhiều thời gian, đối tượng thu dọn JVM thoát. tearDown() sử dụng test bạn thực thao tác mở kết nối đến sở liệu hay sử dụng loại tài nguyên khác hệ thống bạn cần phải dọn dẹp lập tức. Nếu bạn chạy bao gồm số lượng lớn unit test, bạn trỏ tham chiếu đối tượng đến null bên thân phương thức tearDown() giúp cho dọn rác lấy lại nhớ test khác chạy Đôi bạn muốn chạy vài đoạn mã khởi tạo lần, sau chạy phương thức test, bạn muốn chạy đoạn mã dọn dẹp sau tất test kết thúc. Ở phần trên, JUnit gọi phương thứcsetUp() trước test 14 gọi tearDown() sau test kết thúc, để làm điều trên, sử dụng lớp junit.extension.TestSetup để đạt yêu cầu trên. Ví dụ sau minh họa việc sử dụng lớp 1. 2. import junit.extensions.TestSetup; import junit.framework.*; 3. public class TestPerson extends TestCase { 4. public TestPerson(String name) { 5. super(name); 6. } 7. public void testGetFullName() { 8. Person p = new Person("Aidan", "Burke"); 9. assertEquals("Aidan Burke", p.getFullName()); 10. } 11. public void testNullsInName() { 12. Person p = new Person(null, "Burke"); 13. assertEquals("? Burke", p.getFullName()); 14. p = new Person("Tanner", null); 15. assertEquals("Tanner ?", p.getFullName()); 16. } 17. public static Test suite() { 18. TestSetup setup = new TestSetup(new TestSuite(TestPerson.class)) { 19. protected void setUp() throws Exception { 20. //Thực đoạn mã khởi tạo lần 21. } 22. protected void tearDown() throws Exception { 23. //Thực đoạn mã dọn dẹp 24. } 25. }; 26. return setup; 27. } 28. } TestSetup lớp thừa kế từ lớp junit.extension.TestDecorator, Lớp TestDecorator lớp sở cho việc định nghĩa test biến thể. Lý để mở rộng TestDecorator để có khả thực thi đoạn mã trước sau 15 test chạy. Các phương thức setUp() tearDown() lớp TestSetupđược gọi trước sau Test truyền vào constructor, Trong ví dụ truyền tham số có kiểu TestSuite vào constructor lớp TestSetup 1. TestSetup setup = new TestSetup(new TestSuite(TestPerson.class)) { Điều có nghĩa phương thức setUp() gọi lần trước toàn bộ test tearDown() gọi lần sau test test kết thúc. Chú ý: phương thức setUp() tearDown() bên lớp TestPerson thực thi trước sau phương thức test bên lớp TestPerson. II.2.8.Test exception II.2.8.1.Xây dựng test exception Xác minh code hoàn thành cách bình thường quan trọng đảm bảo code chạy mong đợi trường hợp đặc biệt quan trọng hơn. Ví dụ: public void division () { int i = 1/0; } Nếu chạy đơn code phát sinh lỗi ArithmeticException. Vấn đề đặt làm để bạn xác nhận code ném ngoại lệ mong đợi? Junit cung cấp test Exception để code ném ngoại lệ mong đợi chạy bình thường.Các @test có thêm tham số tùy chọn “expected” có giá trị lớp Throwable. Ở đây, muốn xác minh phương thức division() ném ngoại lệ đúng, code viết lại: @Test(expected = ArithmeticException.class) public void testdivisionWithException(){ 16 int i = 1/0; } Các tham số dự kiến nên sử dụng cẩn thận thử nghiệm vượt qua phương thức ném ArithmeticException. Trong test dài hơn, nên sử dụng ExpectedException rule (được mô tả đây) II.2.8.2.Kiểm tra sâu ngoại lệ Các phương pháp hữu ích cho trường hợp đơn giản, có giới hạn nó. Ví dụ, bạn kiểm tra giá trị tin nhắn trường hợp ngoại lệ, trạng thái đối tượng tên miền sau ngoại lệ ném. * Try/ Catch Để giải điều này, sử dụng try/catch phổ biến Junit 3.x @Test public void testExceptionMessage() { try { int i = 1/0; fail("Expected an ArithmeticException to be thrown"); } catch (ArithmeticException ame) { assertThat(ame.getMessage(), is("/ by zero")); } } * ExpectedException Rule Ngoài ra, sử dụng ExpectedException Rule. Quy tắc cho phép bạn ngoại trừ bạn mong đợi, tin nhắn ngoại lệ bạn mong đợi: @Rule public ExpectedException thrown = ExpectedException.none(); @Test public void shouldTestExceptionMessage() throws ArithmeticException { 17 thrown.expect(ArithmeticException.class); thrown.expectMessage("/ by zero"); int i =1/0; } II.2.9.Junit Eclipse II.2.9.1.Thêm thư viện Junit vào project - Download thư viện từ trang chủ www.junit.org/ - Vào Properties -> Java Build Path -> Add External JARs - Chọn đến file Jar vừa down II.2.9.2.Viết TestCase Eclipse Giả sử bạn có project có file Triangle.java cần viết Test cho chương trình .Thực bước sau - Mở New wizard (File -> New -> JUnit Test Case) - Ta giao diện sau 18 - Nhấn Next 19 - Nhấn Finish Cấu trúc Project sau: - Chúng ta viết ca kiểm thử file Triangle_Test.java II.2.9.3.Chạy testcase Eclipse - Để chạy TestFailure nhấn nút chạy công cụ. Nó tự động chạy JUnit Test. Bạn kiểm tra kết thử nghiệm giao diện JUnit. Giao diện cho bạn thấy chạy thử nghiệm tiến tình trạng: 20 21 II.2.10.Giới thiệu số công cụ testing khác II.2.10.1.Cactus Cactus framework unit testing nguồn mở dùng để test cho đoạn mã phía bên server Java. Đặc biệt Cactus cho phép bạn test Servlet, JSP, Servlet filter. Cactus thừa kế từ JUnit để cung cấp lớp lớp junit.framework.TestCase lớp: • org.apache.cactus.ServletTestCase • org.apache.cactus.JspTestCase • org.apache.cactus.FilterTestCase Mỗi test case Cactus cung cấp chức đặc biệt. Cactus test thực thi client server. Khi sử dụng Cactus bạn cần tạo lớp thừa kế từ lớp trên. Sau Cactus tạo chạy thể test case. Một chạy JVM phía client, lại chạy bên JVM môi trường chạy servlet (servlet container) phía server. Bên client phía client cho phép HTTP headers tham số HTTP thêm vào yêu cầu ra. Bên phía server gọi thực thi phương thức bên servlet bạn để thực xác nhận nào, sau gởi phản hồi ngược trở lại cho phía client. Tíếp đến bên phía client xác nhận phản hồi từ bên server gởi có chứa thông tin mong muốn hay không. II.2.10.2. HTTPUnit HttpUnit thư viện nguồn mở Java dùng để tương tác với server HTTP. Với HttpUnit, chương trình Java bạn truy xuất trực tiếp đến server mà không cần thiết phải sử dụng đến trình duyệt. HttpUnit cung cấp API để phân tích HTML, nhận thông tin biểu mẫu trang web, theo dõi siêu liên kết, thiết lập cookie thực tác vụ khác có liên quan đến trình duyệt web. Ngoài gồm thư viện để thao tác trực tiếp đến servlet, không cần thiết phải khởi động web server 22 Thông thường sử dụng kết hợp HttpUnit JUnit để viết test. JUnit định nghĩa framework dùng để kiểm tra, phương thức testXXX() bạn sử dụng hàm API thư viện HttpUnit để truy cập kiểm tra trang web. II.2.10.3.NUnit NUnit framework dành cho việc testing unit tất ngôn ngữ .NET. Khởi đầu JUnit, công cụ hỗ trợ việc unit testing cho Microsoft.NET. Nó viết hoàn toàn C#. III.Kết luận III.1.Kết đề tài: -Tìm hiểu kiến thức Jnit:thuộc họ kiến trúc xUnit, lịch sử phát triển, kiến trúc tổng quát, vấn đề tạo testcase, testsuit, phương thức Junit… -Demo ví dụ minh họa -Các thành viên hiểu kiến thức thực ứng dụng vào toán thực tế -Tổ chức Seminar lớp nộp báo cáo 23 III.2.Hướng nghiên cứu phát triển -Hướng nghiên cứu phát triển tập trung vào vấn đề khó nâng cao sau: +Ajax testing +Testing JSP Applications +Testing OSGi components +Testing database Access +Testing JPA-based Applications IV.Tài liệu tham khảo  http://www.testingvn.com/viewforum.php?f=72  Junit in Action – Vicent Massol with Ted Husted  http://www.junit.org  Download of JUnit  Lots of information on using JUnit  http://www.thecoadletter.com  Information on Test-Driven Development 24 [...]... mới của test case ứng với mỗi phương thức test Từ đó, nếu bạn có 5 phương thức test thì JUnit sẽ tạo ra 5 thể hiện của test case Vì lý do đó, các biến thể hiện không thể được sử dụng để chia sẻ trạng thái giữa các phương thức test Sau khi tạo xong tất cả các đối tượng test case, JUnit tuân theo các bước sau cho mỗi phương thức test: • Gọi phương thức setUp() của test case • Gọi phương thức test • Gọi... các test biến thể Lý do chính để mở rộng TestDecorator là để có được khả năng thực thi đoạn mã trước và sau 15 khi một test chạy Các phương thức setUp() và tearDown() của lớp TestSetupđược gọi trước và sau khi bất kỳ Test nào được truyền vào constructor, Trong ví dụ trên chúng ta đã truyền một tham số có kiểu TestSuite vào constructor của lớp TestSetup 1 TestSetup setup = new TestSetup(new TestSuite(TestPerson.class))... một testcase trong Eclipse - Để chạy TestFailure nhấn nút chạy trong thanh công cụ Nó sẽ tự động chạy như JUnit Test Bạn có thể kiểm tra kết quả thử nghiệm trong giao diện JUnit Giao diện này cho bạn thấy chạy thử nghiệm tiến bộ và tình trạng: 20 21 II.2.10.Giới thiệu một số công cụ testing khác II.2.10.1.Cactus Cactus là một framework unit testing nguồn mở dùng để test cho các đoạn mã phía bên server... phương thức test, và bạn chỉ muốn chạy các đoạn mã dọn dẹp chỉ sau khi tất cả test kết thúc Ở phần trên, JUnit gọi phương thứcsetUp() trước mỗi test và 14 gọi tearDown() sau khi mỗi test kết thúc, vì thế để làm được điều như trên, chúng ta sẽ sử dụng lớp junit. extension.TestSetup để đạt được yêu cầu trên Ví dụ sau sẽ minh họa việc sử dụng lớp trên 1 2 import junit. extensions.TestSetup; import junit. framework.*;... public static Test suite() { 18 TestSetup setup = new TestSetup(new TestSuite(TestPerson.class)) { 19 protected void setUp() throws Exception { 20 //Thực hiện các đoạn mã khởi tạo một lần ở đây 21 } 22 protected void tearDown() throws Exception { 23 //Thực hiện các đoạn mã dọn dẹp ở đây 24 } 25 }; 26 return setup; 27 } 28 } TestSetup là một lớp thừa kế từ lớp junit. extension.TestDecorator, Lớp TestDecorator... phía bên server của Java Đặc biệt là Cactus cho phép bạn test Servlet, JSP, và Servlet filter Cactus thừa kế từ JUnit để cung cấp 3 lớp con của lớp junit. framework.TestCase là các lớp: • org.apache.cactus.ServletTestCase • org.apache.cactus.JspTestCase • org.apache.cactus.FilterTestCase Mỗi test case của Cactus cung cấp 1 chức năng đặc biệt Cactus test thực thi trên cả client và server Khi sử dụng Cactus... dụng kết hợp HttpUnit và JUnit để viết các test JUnit định nghĩa các framework dùng để kiểm tra, và các phương thức testXXX() của bạn sẽ sử dụng các hàm API của thư viện HttpUnit để truy cập và kiểm tra trang web II.2.10.3.NUnit NUnit là một framework dành cho việc testing unit trong tất cả các ngôn ngữ NET Khởi đầu nó cũng được bắt đầu từ JUnit, nó là một công cụ hỗ trợ việc unit testing cho Microsoft.NET... Applications +Testing OSGi components +Testing database Access +Testing JPA-based Applications IV.Tài liệu tham khảo  http://www.testingvn.com/viewforum.php?f=72  Junit in Action – Vicent Massol with Ted Husted  http://www .junit. org  Download of JUnit  Lots of information on using JUnit  http://www.thecoadletter.com  Information on Test- Driven Development 24 ... về tạo testcase, testsuit, các phương thức trong 1 Junit -Demo ví dụ minh họa -Các thành viên đã hiểu các kiến thức cơ bản và thực hiện ứng dụng vào các bài toán thực tế -Tổ chức Seminar trên lớp và nộp báo cáo 23 III.2.Hướng nghiên cứu phát triển -Hướng nghiên cứu phát triển là tập trung vào các vấn đề khó và nâng cao sau: +Ajax testing +Testing JSP Applications +Testing OSGi components +Testing... là 2 phương thức setUp() được gọi chỉ một lần trước toàn bộ bộ test và tearDown() được gọi chỉ một lần sau khi các test trong bộ test kết thúc Chú ý: các phương thức setUp() và tearDown() bên trong lớp TestPerson vẫn được thực thi trước và sau mỗi phương thức test bên trong lớp TestPerson II.2.8 .Test các exception II.2.8.1.Xây dựng một test exception Xác minh code hoàn thành một cách bình thường rất . tài -Tên đề tài: Junit- công cụ Test- Driven- Development Giới thiệu tổng quát về Junit JUnit là một framework đơn giản dùng cho việc tạo các unit testing tự động, và chạy các test có thể lặp đi. tạo 1 test suit? Vũ Đức Luận: 5.Cách viết 1 Testcase 6.Các phương thức Assert 7.Set Up và Tear Down Nguyễn Tiến Đạt: 8 .Test Exception 9 .Junit in Eclipse 10.Các công cụ Testing khác Viết báo cáo:. một bộ test xUnit đầu tiên cho Smalltalk .  Beck và Gamma phát triển JUnit trên một chuyến bay từ Zurich đến Washington, DC.  Từ đó Junit trở thành công cụ chuẩn cho Test- Driven Development

Ngày đăng: 10/09/2015, 10:50

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan