2016-07-15 3 views
2

Visual Studio를 사용하여 두 개의 Excel 시트를 만드는 자동화 된 테스트를 만듭니다. 최종 점검으로,이 두 Excel 시트의 내용을 비교하여 이들이 동일하다는 것을 확인해야합니다. 단언을 통해이를 수행 할 수있는 방법이 있습니까?어설 션을 사용하여 두 Excel 파일 비교

같은 것을 Assert.AreEqual(file1, file2);과 같습니까?

도움이나 도움이 필요하십니까?

+3

당신 관통 모두 스프레드 시트를 엽니 다 오피스 상호 운용성을 사용하고, 루프를 수행해야합니다 행과 열은 각 셀 값을 비교합니다. Office Interop에 대한 자세한 내용은 http://stackoverflow.com/questions/16213255/how-to-read-cell-values-from-existing-excel-file을 참조하십시오. – Mangist

답변

0

Mangist에게 감사드립니다.

public bool compareFiles(string filePath1, string filePath2) 
    { 
     bool result = false; 
     Excel.Application excel = new Excel.Application(); 

     //Open files to compare 
     Excel.Workbook workbook1 = excel.Workbooks.Open(filePath1); 
     Excel.Workbook workbook2 = excel.Workbooks.Open(filePath2); 

     //Open sheets to grab values from 
     Excel.Worksheet worksheet1 = (Excel.Worksheet)workbook1.Sheets[1]; 
     Excel.Worksheet worksheet2 = (Excel.Worksheet)workbook2.Sheets[1]; 

     //Get the used range of cells 
     Excel.Range range = worksheet2.UsedRange; 
     int maxColumns = range.Columns.Count; 
     int maxRows = range.Rows.Count; 

     //Check that each cell matches 
     for (int i = 1; i <= maxColumns; i++) 
     { 
      for (int j = 1; j <= maxRows; j++) 
      { 
       if (worksheet1.Cells[j, i].Value == worksheet2.Cells[j, i].Value) 
       { 
        result = true; 
       } 
       else 
        result = false; 
      } 
     } 


     //Close the workbooks 
     GC.Collect(); 
     GC.WaitForPendingFinalizers(); 
     Marshal.ReleaseComObject(range); 
     Marshal.ReleaseComObject(worksheet1); 
     Marshal.ReleaseComObject(worksheet2); 
     workbook1.Close(); 
     workbook2.Close(); 
     excel.Quit(); 
     Marshal.ReleaseComObject(excel); 

     //Tell us if it is true or false 
     return result; 
    } 

그리고 결과를 확인하는 주장을 사용 : 두 개의 엑셀 파일을 비교하려면 다음을 작성 필자는

Assert.IsTrue(compareFiles(testFile, compareFile), "Output files do not match."); 
2

예상/실제 Excel 시트를 CSV와 같은 텍스트 형식으로 변환 할 수 있습니까?

그렇다면 Approval Tests을 대신 사용할 수 있습니다. 이렇게하면 텍스트 파일을 "예상 된"테스트 결과로 사용할 수 있습니다. 테스트가 실패하면 테스트의 실제 결과를 보여줄 수 있습니다. 예상되는 결과와의 차이가 있습니다.

Diff view

스크린 샷 승인 시험의 this review에서 가져옵니다.

0

하나의 옵션은 EPPlus이라는 오픈 소스 라이브러리를 사용합니다. 자동 테스트 응용 프로그램에서 다운로드하여 참조 할 수 있습니다. EPPlus는 Excel 파일을 읽고 비교할 수있는 여러 가지 방법을 제공합니다. 이러한 옵션 중 하나는 C# Datatable입니다. 여기에 .. 엑셀 파일이 동일한 프로세스를 적용 할 수 있습니다 모두 들어

public static DataTable GetDataTableFromExcel(string path, bool hasHeader = true) 
{ 
using (var pck = new OfficeOpenXml.ExcelPackage()) 
{ 
    using (var stream = File.OpenRead(path)) 
    { 
     pck.Load(stream); 
    } 
    var ws = pck.Workbook.Worksheets.First(); 
    DataTable tbl = new DataTable(); 
    foreach (var firstRowCell in ws.Cells[1, 1, 1, ws.Dimension.End.Column]) 
    { 
     tbl.Columns.Add(hasHeader ? firstRowCell.Text : string.Format("Column {0}", firstRowCell.Start.Column)); 
    } 
    var startRow = hasHeader ? 2 : 1; 
    for (int rowNum = startRow; rowNum <= ws.Dimension.End.Row; rowNum++) 
    { 
     var wsRow = ws.Cells[rowNum, 1, rowNum, ws.Dimension.End.Column]; 
     DataRow row = tbl.Rows.Add(); 
     foreach (var cell in wsRow) 
     { 
      row[cell.Start.Column - 1] = cell.Text; 
     } 
    } 
    return tbl; 
} 
} 

샘플 코드, 그리고 그것은 당신에게 원하는 결과를 제공 할 것입니다.

관련 문제