2012-05-23 4 views
7

Tôi đang viết một số bài kiểm tra xUnit cho một số lớp trợ giúp dựa trên một số cài đặt cấu hình, thường được lưu trữ trong App.config hoặc Web.config của dự án thực thi.App.config cho Xunit

Các cấu hình trông như thế này:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings> 
    <add key="FileNamePattern" value="\\d{8}_\\w{4:20}\.png"/> 
    <!-- and the likes --> 
    </appSettings> 
</configuration> 

Tôi đang chạy xUnit 1.9 với Á hậu GUI (xunit.gui.clr4.exe) và xUnit console Á hậu (trên máy chủ Jenkins CI). Hiện tại, tôi có thể "tiêm" các giá trị cấu hình này vào môi trường thử nghiệm bằng cách đặt các tệp xunit.gui.clr4.exe.config và xunit.console.exe.config theo cách thủ công); Tuy nhiên, điều này là tẻ nhạt và dễ bị lỗi.

Tôi cũng có thể thử các cài đặt cấu hình này trong một vật cố định. Nhưng sử dụng cùng một vật cố định trên 10 tập tin khác nhau khá lặp đi lặp lại.

Có cách nào tốt hơn để thử các cài đặt cấu hình này với xUnit, chẳng hạn như cung cấp tệp App.config cho dự án thử nghiệm không?

+1

Tôi sẽ tạo một ISettings trung gian. Bạn có thể tải app.config vào đó. Sau đó, tất cả những gì bạn cần làm là giả lập giao diện bằng cách sử dụng một khung công tác như Moq. Tôi khá thích trừu tượng đi các tập tin cấu hình càng nhiều càng tốt. –

Trả lời

10

Nếu mã của bạn giả định chúng nằm trong số app.config, thì xUnit.net hỗ trợ chúng có dây trong đó bằng cách cung cấp một (thường là khi thử nghiệm nằm trong tệp DLL, điều này có nghĩa là bạn nhận được tệp AssemblyName.dll.config trong kết quả đầu ra của dự án mà các Á hậu tải như các thiết lập nếu nó tồn tại tại thời gian tải). Rõ ràng là không có hại khi sử dụng nguyên tắc DI để loại bỏ các phụ thuộc như vậy ngay từ đầu, nhưng tôi muốn nói đừng đi sai với mã trước khi bạn thực sự làm cho nó được kiểm tra trước tiên.

Để giữ DRY, hãy đặt app.config ở vị trí trung tâm và thêm nó dưới dạng liên kết (thông qua mũi tên trên nút Mở trong hộp thoại). (Có, có rất nhiều không thích về điều đó -. Chỉ sử dụng nếu bạn cảm thấy cách tiếp cận ác nhất của nó)


Một điều để tìm cho ra là thay đổi này không được nạp lại trong Á hậu GUI trừ khi bạn yêu cầu lắp ráp lại.

+0

Cấu hình hoạt động tốt khi tôi đổi tên nó thành TestNamespace.dll.config và đặt nó luôn luôn sao chép vào thư mục xây dựng. Cảm ơn! –

+0

@ThachMai Tôi sẽ ngạc nhiên nếu rời khỏi nó vì app.config không tự động làm việc - cá nhân tôi luôn nghi ngờ về nó nhưng tôi chưa bao giờ tìm thấy một trường hợp hệ thống xây dựng không thực sự làm việc sao chép/đổi tên - bật ghi nhật ký msbuild và có một cái nhìn (nhớ nó sẽ không được chọn cho đến khi bạn tải lại). –

+0

Tôi sẽ dùng thử và liên hệ lại với bạn vào Thứ Ba tới khi tôi có quyền truy cập vào nguồn. –