2009-06-02 31 views
5

Tôi làm cách nào để thử nghiệm phương pháp sau?Làm cách nào để mã đơn vị thử nghiệm tạo một Quy trình mới?

Đây là phương pháp triển khai lớp bê tông của giao diện.

Tôi đã gói lớp Process bằng giao diện chỉ hiển thị các phương pháp và thuộc tính tôi cần. Lớp ProcessWrapper là việc triển khai cụ thể giao diện này.

public void Initiate(IEnumerable<Cow> cows) 
    { 
     foreach (Cow c in cows) 
     { 
      c.Process = new ProcessWrapper(c); 
      c.Process.Start(); 
      count++; 
     } 
    } 

Trả lời

3

Có hai cách để giải quyết vấn đề này. Đầu tiên là sử dụng tiêm phụ thuộc. Bạn có thể tiêm một nhà máy và bắt đầu gọi phương thức tạo để có được loại ProcessWrapper mà bạn cần cho thử nghiệm của mình.

Giải pháp khác là sử dụng một khuôn khổ nhạo báng như TypeMock, điều này sẽ cho phép bạn giải quyết vấn đề này. TypeMock về cơ bản cho phép bạn giả lập bất cứ thứ gì, vì vậy bạn có thể sử dụng nó để cung cấp một đối tượng giả thay vì các cá thể ProcessWrapper thực tế.

+0

Tôi đang sử dụng Moq nhưng không chắc chắn cách tôi sẽ giả lập. Làm thế nào bạn sẽ làm điều đó trong TypeMock? – Schotime

+0

TypeMock là duy nhất ở chỗ nó sửa đổi IL, cho phép nó giả lập các thực thể mà bạn không thể giả tạo khác. Tôi vẫn muốn giới thiệu phương pháp tiêm đầu tiên, nhưng nếu đó là bằng cách nào đó không thể, bạn có thể nhìn vào TypeMock. –

0

Quy trình của bạn sẽ làm gì? Có cách nào bạn có thể kiểm tra xem nó đang làm những gì nó phải làm gì? Ví dụ, nó có thể ghi vào một tệp hoặc một bảng cơ sở dữ liệu. Hoặc nó có thể lộ ra một API (IPC, dịch vụ web, vv) mà bạn có thể thử gọi với dữ liệu thử nghiệm.

Từ quan điểm TDD, có thể có ý nghĩa khi cắm vào "quy trình thử/thử nghiệm" để thực hiện một số hành động mà bạn có thể dễ dàng kiểm tra. (Điều này có thể yêu cầu thay đổi mã để cho phép mã thử nghiệm của bạn tiêm một thứ gì đó.) Bằng cách này, bạn chỉ đang thử nghiệm mã yêu cầu của mình và không nhất thiết phải thử nghiệm một quy trình kinh doanh thực tế. Sau đó, bạn có thể có các bài kiểm tra đơn vị khác nhau để kiểm tra quy trình kinh doanh của mình.

+0

Bắt đầu một 'Quy trình' mới. – Schotime

+0

Tôi có nghĩa là quy trình phụ của bạn làm gì? Có cách nào để kiểm tra xem quy trình con của bạn có đang làm những gì mà nó phải làm không? –

+0

Quy trình con thực thi Quy trình mới .. ví dụ: chạy một chương trình khác với các đối số làm tất cả công việc. Sau đó tôi chỉ kiểm tra xem nó đã hoàn thành chưa. – Schotime

0

Tôi không quen thuộc với C# trở lại. Ở cấp độ đơn giản nhất, bạn chỉ cần gửi một thông điệp đến quy trình và nhận kết quả. Hoặc bạn có thể có chi tiết hơn và gửi các lệnh cụ thể hơn từ khai thác thử nghiệm của bạn. Nó phụ thuộc vào cách bạn đã thiết lập môi trường thử nghiệm đơn vị của bạn, chính xác hơn cách bạn gửi các lệnh kiểm tra, cách bạn nhận chúng và cách bạn báo cáo kết quả.

Cá nhân tôi sẽ có đối tượng thử nghiệm bên trong quá trình nhận đơn giản, chạy & báo cáo kết quả kiểm tra đơn vị và có mã kiểm tra bên trong đối tượng đó.

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