2009-06-22 42 views
9

Tôi chỉ nhận được vào bằng cách sử dụng VS2008 để viết clr thủ tục lưu trữ cho SQL 2008. Khi viết mã C# tôi đang sử dụng để có một 'dự án thử nghiệm' riêng biệt, nơi tôi sẽ đặt tất cả của tôi mã thử nghiệm đơn vị, tuy nhiên nó xuất hiện lúc đầu đỏ mặt mà tôi không thể có cùng một thiết lập với một dự án sql clr với các thủ tục được lưu trữ. Nó 'cảm thấy' như thế này có thể được thực hiện, và tôi thiếu một vài thông số cấu hình, nhưng tôi không chắc chắn những gì có thể được.CLR SQL lưu trữ thủ tục kiểm tra với đơn vị thử nghiệm dự án

Tôi đang sử dụng

  • Visual Studio 2008
  • MS thử nghiệm
  • MS SQL 2008

yêu cầu của tôi là:

  1. debug các thủ tục lưu trữ trong thị giác studio debugger
  2. có một loạt các bài kiểm tra đơn vị để kiểm tra các thủ tục lưu trữ

Có ai biết làm thế nào tôi có thể có những dự án đơn vị kiểm tra đúng depoly các thủ tục được lưu trữ vào máy chủ, kết nối đến máy chủ SQL, và cho phép tôi bước qua các bài kiểm tra đơn vị để các thủ tục được lưu trữ đang ngồi trên máy chủ?

**** CẬP NHẬT ****

Cảm ơn bạn để tất cả mọi người cho câu trả lời cho đến nay, tuy nhiên họ không excatly những gì tôi đang tìm kiếm.

Mark Seemann's câu trả lời dưới đây là một cách tiếp cận thú vị mà tôi không biết, và tôi chắc chắn sẽ sử dụng khi nói đến việc đặt lại cơ sở dữ liệu của tôi thành một trạng thái đã biết. Tuy nhiên, tôi đang tìm cách gỡ lỗi các thủ tục lưu sẵn CLR, và nó không xuất hiện phương thức của Mark sẽ cho phép tôi bước từ dự án thử nghiệm đơn vị của tôi, thông qua máy chủ SQL và gỡ lỗi mã đang nằm trên máy chủ.

Tôi đang tìm cách thực sự gỡ lỗi C# đang ngồi trên máy chủ, giống như giải pháp pho3nix được liệt kê bên dưới. Tuy nhiên, bằng cách sử dụng cách tiếp cận tiêu chuẩn này, bạn cần phải viết kịch bản thử nghiệm của bạn bằng cách sử dụng một tập tin 'Test.sql' và không sử dụng một dự án thử nghiệm đơn vị từ bên trong Visual Studio.

Tôi hy vọng tôi có thể có hai dự án trong giải pháp của mình, một cho các thủ tục lưu trữ CLR của tôi và một cho dự án thử nghiệm đơn vị của tôi. Khi tôi muốn chạy thử nghiệm trong dự án thử nghiệm đơn vị của mình, tôi hy vọng rằng tất cả các thay đổi được thực hiện cho dự án thủ tục lưu trữ CLR của tôi sẽ được xuất bản lên máy chủ, dự án thử nghiệm sẽ bắt đầu thực thi và nếu tôi đặt điểm ngắt trong CLR thủ tục lưu trữ khi kiểm tra đơn vị bắt đầu kiểm tra thủ tục lưu sẵn nó sẽ phá vỡ trên máy chủ và sau đó tôi có thể bước qua mã.

Giải pháp gần nhất mà tôi đã tìm thấy cho đến thời điểm này là Alex Kuznetsov and Alex Styler, tuy nhiên sử dụng giải pháp này tôi không thể chuyển sang máy chủ SQL.

**** UPDATE 2 ****

Đây là chi tiết của một 'bump' để đưa câu hỏi này lại lên ... Tôi đã vẫn không có may mắn bước đến máy chủ SQL từ các đơn vị kiểm tra. Bất kỳ suy nghĩ nào khác?

Trả lời

2

Bạn phải bật gỡ lỗi SQL/CLR trên kết nối trước khi có thể gỡ lỗi mã của bạn. để làm điều đó, hãy làm theo hướng dẫn tại đây http://msdn.microsoft.com/en-us/library/ms165039(VS.80).aspx

Lưu ý rằng khi bạn gỡ lỗi của bạn C# SP, tất cả các chủ đề quản lý trong máy chủ SQL sẽ đình chỉ trong gỡ lỗi của bạn

Hope this helps.

1

I wrote pretty extensively on this subject một số thời gian trước đây. Tôi luôn triển khai các thành phần truy cập dữ liệu của mình theo kiểu TDD. Hãy xem bài đăng trong liên kết - bản thân bài viết có thể không cung cấp cho bạn cái nhìn tổng quan tốt nhất, nhưng bạn cũng có thể tải xuống mã mẫu và kiểm tra nó theo cách giải trí của riêng bạn.

Tôi nghĩ rằng nó đáp ứng tất cả các yêu cầu của bạn.

2

Khi tạo dự án, tôi có nút treeview với cơ sở dữ liệu và một mục có tên là SQL Server Project.

alt text http://img514.imageshack.us/img514/8523/81345560.jpg

Tiếp theo khi dự án mẫu được tạo ra tôi nhận được thử nghiệm Scripts (Test.sql), nơi tôi có thể kiểm tra tất cả các lớp SQL Server CLR của tôi, sử dụng thủ tục sql chung và các lệnh.

alt text http://img17.imageshack.us/img17/7826/38591345.jpg

Với điều này bạn có thể có một giao diện phát triển cho CLR với debug. Test.sql giống như một Class Unit cho các lớp CLR.

PS. Đừng quên CLR hoạt động trong cấu hình máy chủ SQL của bạn.

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