2009-08-29 33 views
5

Tôi đang viết kiểm tra đơn vị theo hướng dữ liệu bằng cách sử dụng nguồn dữ liệu Xml trong C# VS2008.Mở rộng Microsoft.VisualStudio.TestTools.DataSource.XML

Thuộc tính trông giống như thế này và mọi thứ hoạt động awesomely.

[DeploymentItem("HtmlSchemaUrls.xml")] 
    [DataSource("DataSource", "Microsoft.VisualStudio.TestTools.DataSource.XML", "|DataDirectory|\\HtmlSchemaUrls.xml", Microsoft.VisualStudio.TestTools.WebTesting.DataBindingAccessMethod.Sequential, "URL")] 
    [DataBinding("DataSource", "URL", "URL_Text", "DataSource.URL.URL_Text")] 
    [TestMethod] 

Tôi muốn mở rộng khả năng của nguồn dữ liệu Microsoft.VisualStudio.TestTools.DataSource.XML, tốt nhất có thể định cấu hình thông qua App.config. Ví dụ, một bool khi tôi thực sự chạy qua tất cả các hàng trong tệp Xml và khi tôi chạy sai chỉ một.

Tôi không muốn thực hiện việc kiểm tra này trong trường hợp kiểm tra - Tôi có 1000 trường hợp kiểm tra với yêu cầu này.

Bất kỳ hướng dẫn nào về cách đạt được điều này sẽ được đánh giá cao nhất.

+1

Something vẻ như sai nếu bạn có 1000s các thử nghiệm đánh vào hệ thống tệp (thành thật mà nói, tại thời điểm đó, bạn đang thực hiện thử nghiệm tích hợp, chứ không phải kiểm tra đơn vị). Bạn có thể muốn xem xét thực hiện một số loại chế giễu hoặc nhổ để cô lập mã mà bạn đang thử nghiệm cho những trường hợp mà bạn chỉ cần một dòng XML. – Michael

Trả lời

1

Sử dụng AssemblyInitialize để sao chép tập kiểm tra XML của bạn từ một số kho cài đặt thử nghiệm.
1 - theo cách này, bạn không cần [DeploymentItem ("HtmlSchemaUrls.xml")]
2 - thay vì chỉ sao chép, tạo tệp mới chứa bản ghi bạn cần kiểm tra (sử dụng tham số xsl?)
3 - tất cả các thông số hoạt động có thể được lưu trữ trong app.config của bạn

dụ rút gọn (sử dụng bản sao đơn giản để chuẩn bị dữ liệu điều khiển test env:

[AssemblyInitialize()] 
public static void AssemblyInit(TestContext context) 
{ 
    ... 
    string strRelocatedTestCaseFile = 
    Path.Combine(TheToolBox.ShortPath(AppDomain.CurrentDomain.BaseDirectory),                   
       "TestCase.xml"); 
    if(!string.IsNullOrEmpty(strTestCaseFile)) 
    { 
    string strMessage = "Copying TestCase input file: '" + 
         strTestCaseFile + "' to '" + strRelocatedTestCaseFile + "'"; 
    Console.WriteLine(strMessage); 
    File.Copy(strTestCaseFile, strRelocatedTestCaseFile, true); 
    } 
} 
+0

Đây là một ý tưởng hay, nhưng không bị cản trở vì 'DataSource' liên kết dữ liệu ** trước khi ** AssemblyInitialize thậm chí còn chạy. Kiểm tra sẽ luôn bị kẹt bằng phiên bản "cũ" của tệp nguồn dữ liệu. – Snixtor