2010-01-25 34 views
5

Tôi muốn sử dụng biến tĩnh làm tham số cho DeploymentItem trên thử nghiệm đơn vị MSTest nhưng dường như tôi không thể làm như vậy. Có một tập tin XSL mà cần phải được sao chép cùng với các tập tin DLL khi chạy thử nghiệm đơn vị, và tôi xác định vị trí nhưC# sử dụng biến tĩnh làm tham số cho DeploymentItem

Tuy nhiên, khi tôi sau đó làm như sau:

[TestMethod] 
[DeploymentItem(DLL)] 
[DeploymentItem(_xslPath)] 
public void XmlToResultsTest() { } 

tôi được xây dựng này lỗi:

An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type

Okay okay, tiền phạt, nhưng nó chỉ có vẻ quá bẩn để lắp ráp các con đường bản thân mình:

[DeploymentItem(@"MyProjectDir\transform.xsl")] 

Tôi có quá cầu kỳ ở đây về việc muốn sử dụng Path.Combine không? Có một lựa chọn khác mà tôi đang thiếu? Tôi cho rằng tôi chỉ có thể đặt tệp XSL vào thư mục giải pháp gốc nên tôi không phải chuyển vào thư mục dự án như là một phần của đường dẫn.

Trả lời

10

Thuộc tính chỉ có thể sử dụng chuỗi không đổi, vì vậy không: bạn không thể thực hiện việc này (bạn sẽ phải sử dụng phiên bản được kết hợp trước hoặc ghép bằng chữ - không phải Path.Combine). Bạn cũng có thể sử dụng các thiết lập triển khai thử nghiệm dự án (testrunconfig?), Nhưng thẳng thắn tôi thích sử dụng phương thức NUnit để chỉ đánh dấu tệp (trong csproj, như bình thường) để triển khai. Tôi vẫn chưa hiểu tại sao MS bổ sung thêm một cách riêng biệt của định nghĩa này ...

0

này hoạt động tốt đối với tôi:

[TestClass] 
[DeploymentItem(TestParams.ConfigFileName)] 
public class MyTest 
{ 
    private static class TestParams 
    { 
     public const string ConfigFileName = "TestConfig.xml"; 
    } 
// ... 
} 
Các vấn đề liên quan