2011-02-20 29 views
6

Tôi có một phương pháp mà đồng bộ hóa hai thư mục, trông như thế này:Làm thế nào để kiểm tra hoạt động hệ thống tập tin

void Synchronize(string folderAPath, string folderBPath) 
{ 
    //Code to synchronize the folders 
} 

Điều gì sẽ là cách tốt nhất để kiểm tra xem các tập tin được đồng bộ đúng cách, hoặc nói chung, kiểm tra phương pháp thao tác hệ thống tập tin? Có cách nào để thiết lập các thư mục ảo không?

+0

Xem xét sử dụng lớp Uri thay vì chuỗi cho các đối số để thể hiện ý định của bạn, cũng như nhận được một số đối số kiểm tra miễn phí. MSDN: http://msdn.microsoft.com/en-us/library/system.uri.aspx –

Trả lời

7

Bạn có thể xác định giao diện IFileSystem cung cấp các phương pháp liên quan đến tệp và chuyển phương thức đó vào phương thức Synchronize của bạn. Đối với hệ thống thực, bạn thực hiện giao diện bằng cách sử dụng File I/O thực, cho thử nghiệm của bạn, bạn có thể vượt qua một triển khai chỉ hoạt động trong bộ nhớ dựa trên dữ liệu thử nghiệm mà bạn đã thiết lập trước đó, nhưng không cần chạm vào hệ thống tệp thực. Không có gì sai khi sử dụng các bài kiểm tra phụ thuộc vào hệ thống tập tin, đặc biệt nếu nó sẽ rất khó để giả mạo dữ liệu mong đợi bằng phương pháp được kiểm tra - trong khi các bài kiểm tra này có thể được coi là "tích hợp" , trái với các bài kiểm tra đơn vị họ vẫn cung cấp giá trị.

0

Bạn không có lựa chọn nào khác ngoài việc viết trình bao bọc.

CHỈNH SỬA: cập nhật liên kết, Đó là một NuGet!
Có một cái nhìn tại một này: http://weblogs.asp.net/bleroy/archive/2010/11/19/fluentpath-1-0.aspx

EDIT
Erg, chỉ thấy rằng thư viện tôi liên kết với không có lớp trừu tượng thêm để cho phép thử nghiệm. Nhưng hey, đó là mã nguồn mở;)

+0

Bạn * làm * có lựa chọn. Xin vui lòng xem câu trả lời của tôi. – CesarGon

+0

tốt, tôi thấy điểm trong một bài kiểm tra tích hợp chạy mỗi đêm. Nhưng bạn đang đi đầu quay lên một máy ảo tại địa phương sau mỗi thay đổi hoặc mỗi xây dựng? –

+0

No. Chúng tôi có một máy ảo được thiết lập cho mỗi hệ thống trong quá trình phát triển cần kiểm tra hệ thống tập tin. Ảnh chụp nhanh được thiết lập với trạng thái bắt đầu nổi tiếng. Là một phần của kịch bản thử nghiệm, ảnh chụp nhanh được áp dụng và các thử nghiệm được chạy. Đó là một quá trình không đau và hoàn toàn tự động. – CesarGon

-1

Tôi đã sử dụng máy ảo trên Hyper-V trong quá khứ với thành công lớn. Bạn có thể sử dụng snapshots để tạo trạng thái đã biết và quay lại trạng thái đó khi cần thiết cho mục đích thử nghiệm. Các công nghệ máy ảo khác có lẽ cũng sẽ hoạt động.

Chúng tôi có một máy ảo được thiết lập cho từng hệ thống đang phát triển cần kiểm tra hệ thống tập tin. Ảnh chụp nhanh đã được thiết lập cũng như trạng thái bắt đầu nổi tiếng. Là một phần của kịch bản thử nghiệm, ảnh chụp nhanh được áp dụng và các thử nghiệm được chạy. Đó là một quá trình không đau và hoàn toàn tự động. Theo kinh nghiệm của chúng tôi, giải pháp này đã được chứng minh là vượt trội hơn các phương pháp "giả" như mô phỏng hệ thống tệp, vì nó mang lại cho chúng ta hành vi thực tế, lộn xộn, không thể đoán trước của các hệ thống tệp. Hết dung lượng, các vấn đề về quyền, lỗi RAID, các vấn đề về điểm thô lỗ, v.v. khó mô phỏng.

+1

Đó không phải là một lựa chọn để thử nghiệm đơn vị. –

+0

@ Henk Holterman: Ai nói? Chúng tôi đã sử dụng nó để thử nghiệm đơn vị trong hơn 3 năm. Bạn có thể vui lòng giải thích tại sao nó không phải là một lựa chọn theo ý kiến ​​của bạn? Bên cạnh đó, OP không đề cập đến thử nghiệm * đơn vị *. – CesarGon

+1

Các thẻ bao gồm [kiểm tra đơn vị]. Và tất nhiên bạn có thể sử dụng các công cụ không cần thiết với một máy ảo nhưng sau đó nó không thực sự unittesting nữa. Với tất cả những gì đã nói, tôi vẫn coi đây là một câu trả lời hợp lý (thực dụng) cho vấn đề này. –

8

Như @BrokenGlass đã thông báo, việc ẩn API thực sự đằng sau giao diện giả lập cho phép bạn kiểm tra đơn vị logic của mình. Tôi sẽ làm điều này chỉ mặc dù nếu có logic đáng kể trong đó để biện minh cho sự phức tạp thêm cần thiết để làm cho đơn vị giao diện kiểm tra được. Kiểm tra xem mã có thực sự hoạt động trong hoàn cảnh thực tế hay không, trên hệ thống tệp thực cần kiểm tra tích hợp, vì vậy trong các trường hợp đơn giản, các kiểm tra đơn vị có thể bị bỏ qua, sử dụng tài nguyên hạn chế hiệu quả hơn.

+1

+1 Đồng ý - đôi khi nỗ lực trong việc thiết lập thử nghiệm đơn vị "thực" không đáng giá, tất cả đều phụ thuộc vào kịch bản - chủ nghĩa thực dụng thắng cho tôi. – BrokenGlass

+1

+1 Trong trình soạn thảo hiện tại của chúng tôi, tôi đang trong quá trình xóa hàng trăm dòng trừu tượng (có thể là lỗi) và thay thế rất nhiều sự nhầm lẫn IoC bằng các cuộc gọi hệ thống thẳng. Nó đã được bloating cơ sở mã của chúng tôi cho năm ngoái, được sử dụng để kiểm tra đơn vị khoảng 25 dòng mã thực. Có vẻ như là một ý tưởng tốt vào thời điểm đó. –

0

Tôi không thấy điểm kiểm tra hoạt động của hệ thống tệp. Chỉ cần mở tệp, theo cách đó bạn có thể kiểm tra bằng các dữ liệu khác nhau bằng cách mở một tệp khác.

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