2011-01-24 32 views
14

Tôi đang có cùng một vấn đề giống như câu hỏi được liên kết bên dưới, nhưng tôi dường như không làm cho nó hoạt động. Tôi nhận được "không thể áp dụng chỉ mục [] cho một biểu thức của loại System.Data.DataRow". Theo như tôi có thể nói, tôi đã thực hiện giải pháp một cách chính xác.Thử nghiệm điều khiển dữ liệu trong MSTest - vấn đề với TestContext.DataRow

Problems with data driven testing in MSTest

[TestClass] 
public class UnitTest1 
{ 
    private TestContext testContextInstance; 

    public TestContext TestContext 
    { 
     get 
     { 
      return testContextInstance; 
     } 
     set 
     { 
      testContextInstance = value; 
     } 
    }   

    private ServiceReference1.ProductCatalogClient client = new ServiceReference1.ProductCatalogClient("BasicHttpBinding_IProductCatalog"); 

    [DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "|DataDirectory|\\CountList.csv", "CountList#csv", DataAccessMethod.Sequential), DeploymentItem("..\\ServiceTest\\CountList.csv"), TestMethod] 
    public void AreCountsCorrect() 
    { 
     int id = TestContext.DataRow["Id"] as int; 
     int count = client.GetProductCount(id); 
     Assert.IsTrue(count == TestContext.DataRow["Count"] as int); 
    } 
} 
+2

Tìm thấy sự cố của tôi: Cần thiết để thêm tham chiếu đến System.Data trong dự án thử nghiệm của tôi. – bq1990

Trả lời

17

Thêm một tham chiếu đến System.Data cho dự án thử nghiệm. Không có ý tưởng tại sao điều đó sẽ không được tự động đưa vào kể từ khi DataRow được sử dụng cho các thử nghiệm dựa trên dữ liệu.

0

này đang làm việc với tôi

[TestMethod] 
    [TestCategory("Category 4")] 
    [DataSource("MyExcelDataSource")] 
    [DeploymentItem("UnitTestProject\\DBConnections.xlsx")] 
    public void testwithexceldata() 
    { 
     //http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.unittesting.testcontext.datarow.aspx 

     int x = TestContext.DataRow.Table.Rows.Count; 
     int Balance = Convert.ToInt32(TestContext.DataRow["Balance"]); 
     int Amount = Convert.ToInt32(TestContext.DataRow["Amount"]); 
     Assert.AreEqual(Balance, Amount); 

}

1

tôi đã có vấn đề tương tự như bạn với this.TestContext.DataRow [ "PathFile_Original"], những gì tôi đã làm sai quá đơn giản, tôi không thêm tham chiếu vào System.Data, đó là tất cả.

Nó khá dễ dàng để sửa chữa, hãy chắc chắn rằng bạn đã có thư viện.

Chúc mừng

5

Bạn nên thêm tham chiếu đến dự án thử nghiệm của mình để khắc phục vấn đề này. Tôi không biết tại sao VS2013 không tự động thêm nó.

nhấp chuột phải vào dự án thử nghiệm của bạn, Thêm-> Tham chiếu ...-> Tập hợp-> Khung-> System.Data, kiểm tra.

Xong!

enter image description here

1

Để khắc phục vấn đề của bạn, như những người khác đã nói, bạn nên thêm một tham chiếu đến System.Data trong dự án của bạn.

Nếu bạn vẫn gặp sự cố sau khi tham chiếu đó đã được thêm, bạn có thể cần khởi động lại Visual Studio và xóa mọi tham chiếu thừa hoặc using tiêu đề.

+0

Điều này không cung cấp câu trả lời cho câu hỏi. Để phê bình hoặc yêu cầu làm rõ từ tác giả, để lại nhận xét bên dưới bài đăng của họ - bạn luôn có thể nhận xét về bài đăng của riêng bạn và sau khi bạn có đủ [danh tiếng] (http://stackoverflow.com/help/whats-reputation), bạn sẽ có thể [nhận xét về bài đăng bất kỳ] (http://stackoverflow.com/help/privileges/comment). –

+0

Cảm ơn Bob. Tôi đã chỉnh sửa câu trả lời của tôi để nó đọc như một câu trả lời cho câu hỏi. – Frakur

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