2012-10-08 5 views
1

Я пишу модульные тесты для тестирования веб-сервисов. Я добавил ссылку на сервисное решение C# unit tests и начал использовать классы в веб-сервисах для тестирования. Я также добавил файл Excel для получения значений тестового тестирования.Использование файла Excel для извлечения данных для тестирования модулей C#

Ниже приведен пример о том, что я делал до

[DataSource("System.Data.Odbc" 
,"Dsn=Excel Files;dbq=|DataDirectory|\\TestData.xlsx;defaultdir=C:\\TestData;driverid=1046;maxbuffersize=2048;pagetimeout=5" 
,"Sheet1$" 
,DataAccessMethod.Sequential) 
,DeploymentItem("TestProject1\\TestData.xlsx") 
,Owner("") 
,Description("") 
,TestMethod()] 
public void test1() 
{ 
    try 
    { 
     var Service = new Service.ServiceClient(); 
     var Cid = testContextInstance.DataRow["CId"].ToString(); 
     var MNumber = testContextInstance.DataRow["MNumber"].ToString(); 
     var VID = testContextInstance.DataRow["VID"].ToString(); 
     var isVisit = new Service.ISVisit() 
     { 
      CID = Cid, 
      MNum = MNumber, 
      VCode = VID 
     }; 

    var first = Service.Medis(isVisit).Cast<Service.ISMedi>().FirstOrDefault(); 
    // Assert 
    Assert.AreEqual("12345678", first.Proc.ProcID); 
    } 
    catch (Exception ex1) 
    { 
     if (ex1.InnerException != null) 
      Debug.WriteLine(ex1.InnerException.Message); 
     Assert.Fail(ex1.Message); 
    } 
} 

Этот test1 прошло .Medis(), IsVisit классы в услугах. До сих пор у меня только одна строка в файле Excel, и я смог получить данные и протестировать их.

enter image description here

Но теперь требование в том, что если есть более чем одна строка в файле Excel, тест блок должен перебрать каждой строки и проверить каждую строку, чтобы увидеть годен/не годен.

enter image description here

Пожалуйста, помогите мне с this.How Переберите каждой строки в файле первенствовать в и проверить тест results.How, чтобы справиться с этой ситуацией в C# unitesting.Thank вы

+0

Вы пробовали? Он должен работать таким образом из коробки в соответствии с [MSDN] (http://msdn.microsoft.com/en-us/library/ms182527.aspx). –

ответ

1

Вы уже делая это, DataSource атрибут запускает тест один раз в строке в исходном файле. Ваша проблема утверждает результаты.

Чтобы решить эту проблему, файлы Excel, должны также содержать своего рода ожидаемого результата для строки столбец (ProcId возможно), который вы будете получать вместе с данными строк и выдвинуть против в конце:

// ... 
var VID = testContextInstance.DataRow["VID"].ToString(); 
var expectedResult = testContextInstance.DataRow["ExpectedResult"].ToString(); 
var isVisit = new Service.ISVisit() 
{ 
    CID = Cid, 
    MNum = MNumber, 
    VCode = VID 
}; 

// ... 

Assert.AreEqual(expectedResult, first.Proc.ProcID); 
+0

Спасибо, приятель .. :) – user1410658

Смежные вопросы