2014-07-01 14 views
10

Tôi có câu hỏi về thử nghiệm đơn vị Phương pháp chính của ứng dụng bảng điều khiển. Chữ ký giữa các ý kiến ​​C# Unit Testing (Nunit) phương pháp chính của một ứng dụng giao diện điều khiển?

public static void Main(string[] args) 

Tôi muốn để có thể kiểm tra để đảm bảo rằng chỉ có 1 tham số được truyền vào. Nếu có nhiều hơn một tham số được truyền vào mà tôi muốn thử nghiệm thất bại.

Tôi không nghĩ rằng tôi có thể giả lập điều này với phương thức tĩnh là một phương thức tĩnh.

Bất kỳ ai có kinh nghiệm với điều này?

Bất kỳ ý tưởng nào?

Cảm ơn

+0

Tại sao bạn cần phải thử nó? Liệu nó có phụ thuộc không thể được gọi? –

+0

Đầu vào phải được kiểm tra tại thời gian chạy bên trong phương pháp chính của bạn. Tại sao điều này lại quan trọng đối với thử nghiệm đơn vị của bạn? – SBI

+0

Chỉ cần một lưu ý cho người đọc trong tương lai: Chữ ký có thể được thay đổi thành 'static int Main' và đôi khi tôi sử dụng tín hiệu trả về đó để tạo các bài kiểm tra đơn vị – Simeon

Trả lời

18

Không có gì để giả lập trong trường hợp của bạn. Static Program.Main là một phương thức giống như bất kỳ phương thức nào khác và bạn kiểm tra nó như vậy - bằng cách gọi nó.

Vấn đề với phương thức static void là bạn chỉ có thể xác minh xem nó có ném ngoại lệ hoặc tương tác với đối số đầu vào (hoặc các thành viên tĩnh khác). Vì không có gì để tương tác với trên string[], bạn có thể kiểm tra trường hợp trước đây.

Tuy nhiên, cách tiếp cận âm thanh hơn là ủy quyền tất cả logic có trong Main để tách thành phần và thử nghiệm thành phần thay thế. Không chỉ này cho phép bạn kiểm tra đầu vào xử lý lập luận logic của bạn triệt để nhưng cũng đơn giản hóa Main đến nhiều hay ít này:

public static void Main(string[] args) 
{ 
    var bootstrapper = new Bootstrapper(); 
    bootstrapper.Start(args); 
} 
Các vấn đề liên quan