2013-03-27 25 views
6

Ok vì vậy tôi chỉ có một bài tập mà tôi phải thực hiện kiểm thử đơn vị trên một lớp với một hàm tạo riêng.C# Lớp thử nghiệm đơn vị với một hàm tạo riêng?

Bây giờ làm thế nào tôi giả sử để làm thử nghiệm đơn vị mà không khởi tạo một lớp khi tất cả các phương pháp cũng không tĩnh.

Có cách nào tôi có thể thực hiện kiểm thử đơn vị (không phản chiếu) trên lớp với một hàm tạo riêng không?

+0

về cơ bản, không thể mà không có sự phản ánh, nhưng bạn có thể đăng mẫu mã của mình để xem nó có thể được làm việc hay không –

+4

Làm thế nào để bạn tạo các thể hiện của các lớp này? Phương pháp nhà máy? Singleton? Tôi thích khi kiểm tra đơn vị hiển thị các vấn đề thiết kế trong mã của bạn. –

+0

Tôi đoán, lớp học là Singleton. Bạn có thể xác nhận? –

Trả lời

8

Nếu lớp học này có một hàm tạo riêng, điều này có được sử dụng công khai không? Nếu không, nó có thể là tốt nhất không để đơn vị kiểm tra nó. Nếu trường hợp này xảy ra, mã được công khai phải tự kiểm tra mã này bằng cách gọi mã đó.

Thử nghiệm đơn vị ở đó để kiểm tra những gì sẽ được sử dụng bởi công chúng - bằng cách giao tiếp mã giữa các lớp ứng dụng chẳng hạn. Lấy một đầu vào, tôi muốn đầu ra này. Đó thực sự là những gì thử nghiệm đơn vị là về. Kiểm tra đơn vị không quan tâm những gì là trong phương pháp thực tế. Miễn là nó trả về những gì bạn muốn, thực hiện hành động mong muốn, bạn có một pass.

+0

cũng infact không có gì là công khai trong lớp học cả. –

+6

@WinCoder Sau đó, bạn sử dụng nó như thế nào? – bas

+0

cũng ngày hôm nay khi tôi yêu cầu làm rõ tôi đã được nói rằng tôi phải infact chính xác những sai lầm trong mã quá. Giống như công khai công khai .... –

2

Bạn phải thử nghiệm thông qua API công khai - phải có một số cách cách lớp bạn muốn thử nghiệm được khởi tạo và sử dụng.

0

Kiểm tra đơn vị thường được viết và chạy để đảm bảo mã đáp ứng được thiết kế và hoạt động như dự định.

Tạo lớp học non-static mà bạn không thể tạo cá thể, tức là (các) hàm tạo riêng, có thể không bao giờ hữu ích, trong các từ khác không bao giờ là Unit Testable.

Để có thể kiểm chứng Đơn vị:

  1. Bạn sẽ có thể tạo ra một thể hiện của lớp.
  2. Chức năng có thể kiểm tra phải là Công khai hoặc Nội bộ. Bạn có thể kiểm tra chức năng nội bộ bằng cách lắp ráp của bạn như một Friend Assembly
11

Nếu bạn không thể làm cho public class, bạn vẫn có thể kiểm tra nó một cách dễ dàng bằng cách tạo ra một thể hiện của nó theo cách này:

var anInstance = (YourPrivateClass)Activator.CreateInstance(typeof(YourPrivateClass), true); 

này sẽ cung cấp cho bạn một ví dụ về lớp học của bạn mà bạn có thể điền vào.

Một bit thử nghiệm hữu ích khác là nếu bạn có phương thức nội bộ (không phải riêng tư), bạn có thể truy cập chúng bằng cách hiển thị nội bộ cho lớp thử nghiệm của bạn. Bạn thêm dòng này vào assemblyinfo.cs của lớp với các phương thức nội bộ:

[assembly: InternalsVisibleTo("YourSolution.Tests")] 
0

Nó có thể là một singleton và bạn không muốn người xây dựng công khai cho lớp. Trang trí hàm tạo với: [ExcludeFromCodeCoverage]

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