Visual Studio를 사용하여 두 개의 Excel 시트를 만드는 자동화 된 테스트를 만듭니다. 최종 점검으로,이 두 Excel 시트의 내용을 비교하여 이들이 동일하다는 것을 확인해야합니다. 단언을 통해이를 수행 할 수있는 방법이 있습니까?어설 션을 사용하여 두 Excel 파일 비교
같은 것을 Assert.AreEqual(file1, file2);
과 같습니까?
도움이나 도움이 필요하십니까?
Visual Studio를 사용하여 두 개의 Excel 시트를 만드는 자동화 된 테스트를 만듭니다. 최종 점검으로,이 두 Excel 시트의 내용을 비교하여 이들이 동일하다는 것을 확인해야합니다. 단언을 통해이를 수행 할 수있는 방법이 있습니까?어설 션을 사용하여 두 Excel 파일 비교
같은 것을 Assert.AreEqual(file1, file2);
과 같습니까?
도움이나 도움이 필요하십니까?
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.");
예상/실제 Excel 시트를 CSV와 같은 텍스트 형식으로 변환 할 수 있습니까?
그렇다면 Approval Tests을 대신 사용할 수 있습니다. 이렇게하면 텍스트 파일을 "예상 된"테스트 결과로 사용할 수 있습니다. 테스트가 실패하면 테스트의 실제 결과를 보여줄 수 있습니다. 예상되는 결과와의 차이가 있습니다.
스크린 샷 승인 시험의 this review에서 가져옵니다.
하나의 옵션은 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;
}
}
샘플 코드, 그리고 그것은 당신에게 원하는 결과를 제공 할 것입니다.
당신 관통 모두 스프레드 시트를 엽니 다 오피스 상호 운용성을 사용하고, 루프를 수행해야합니다 행과 열은 각 셀 값을 비교합니다. Office Interop에 대한 자세한 내용은 http://stackoverflow.com/questions/16213255/how-to-read-cell-values-from-existing-excel-file을 참조하십시오. – Mangist