2008-08-29 56 views
5

Tôi có một ứng dụng gửi tin nhắn đến một dịch vụ web bên ngoài. Tôi xây dựng và triển khai ứng dụng này bằng cách sử dụng MSBuildCruisecontrol.NET. Khi CCNET xây dựng và triển khai ứng dụng, nó cũng chạy một bộ kiểm tra sử dụng NUnit. Bây giờ tôi muốn thử nghiệm giao tiếp dịch vụ web.Tự động kiểm tra giao tiếp dịch vụ web

Ý tưởng của tôi là trong quá trình xây dựng, dịch vụ web sẽ được tạo (dựa trên dịch vụ web bên ngoài WSDL) và được triển khai tới máy chủ web cục bộ của máy chủ xây dựng. Tất cả các dịch vụ web nên làm là để nhận được tin nhắn và đặt nó trên hệ thống tập tin để tôi sau đó có thể kiểm tra nó bằng cách sử dụng NUnit bình thường ví dụ. Điều này cũng sẽ làm cho việc phát triển dễ dàng hơn khi các nhà phát triển mới chỉ phải chạy kịch bản xây dựng và được dựng và chạy (không phải mất thời gian để thiết lập kết nối với dịch vụ của bên thứ ba).

Có bất kỳ tiện ích hiện có nào ở đó dễ dàng giả lập dịch vụ web dựa trên WSDL không? Bất cứ ai thực hiện một cái gì đó tương tự bằng cách sử dụng MSBuild?

các cách khác để kiểm tra trường hợp này không?

Trả lời

3

Tôi chỉ mới bắt đầu xem xét http://www.soapui.org/ và có vẻ như nó sẽ hoạt động tốt để thử nghiệm các dịch vụ web.

Ngoài ra, có thể xem thêm một lớp trừu tượng trong dịch vụ web của bạn, mỗi cuộc gọi dịch vụ sẽ gọi trực tiếp một phương thức có thể kiểm tra (bên ngoài phạm vi web)? Tôi chỉ làm điều này với một dự án lớn hơn mà tôi đang làm việc và khả năng kiểm tra của nó hoạt động tốt.

+0

Tôi đã sử dụng soapui cho cả chức năng và hiệu suất kiểm tra dịch vụ web của chúng tôi và nó hoạt động tốt :) –

1

Nói chung, cách rất tốt để kiểm tra những thứ như thế này là sử dụng mock objects.

Khi làm việc, chúng tôi sử dụng sản phẩm TypeMock để kiểm tra những thứ như giao tiếp Dịch vụ web và các phụ thuộc bên ngoài khác. Nó chi phí tiền bạc, vì vậy vì lý do đó nó có thể không phù hợp với nhu cầu của bạn, nhưng tôi nghĩ rằng đó là một sản phẩm tuyệt vời. Tôi có thể nói với bạn từ kinh nghiệm cá nhân rằng nó tích hợp rất tốt với NUnit và CCNet.

Nó có một cú pháp thực sự đơn giản mà về cơ bản bạn nói "khi phương thức/thuộc tính này được gọi, tôi muốn bạn trả lại giá trị này thay thế." Thật tuyệt vời khi thử nghiệm những thứ như lỗi mạng, tệp không có mặt và tất nhiên là các dịch vụ web.

1

Hãy xem NMock2. Đó là một sản phẩm chế nhạo mã nguồn mở và cho phép bạn tạo các triển khai "ảo" cho các giao diện hỗ trợ tương tác phong phú và sâu sắc.

Ví dụ, nếu giao diện WS của bạn được gọi IService và có một phương pháp Data GetData(), bạn có thể tạo ra một mô hình đòi hỏi phương pháp này được gọi là một lần và trả về một Data đối tượng mới:

var testService = mockery.NewMock<IService>(); 
Expect 
    .Once 
    .On(testService) 
    .Method("GetService") 
    .WithNoArguments() 
    .Will(
     Return.Value(new Data()); 

Cuối cùng của thử nghiệm, hãy gọi mockery.VerifyAllExpectationsHaveBeenMet() để đảm bảo rằng phương pháp GetData đã thực sự được gọi.

P.S .: đừng nhầm lẫn dự án "NMock2" với "NMock RC2", còn được gọi là "nmock2" trên sourceforge. NMock2-the-project dường như đã thay thế NMock.

1

Đây cũng có thể là điều gì đó - MockingBird. Nhìn hữu ích.

0

Tại nơi làm việc của mình, chúng tôi đang sử dụng TypemocknUnit để thử nghiệm đơn vị của chúng tôi.

Các vấn đề liên quan