2010-07-28 29 views
8

Tôi đang triển khai tạo tài liệu MS word bằng cách sử dụng các điều khiển nội dung và OpenXML SDK. Tôi muốn có một số thử nghiệm tự động cho mã đó (kiểm tra đơn vị hoặc một số kiểm tra tự động hóa giao diện người dùng dễ dàng).Thử nghiệm tự động OpenXML SDK

Có ai đã thử nghiệm với việc thử nghiệm tạo tài liệu MS Word không? Các tùy chọn có thể là gì?

Cảm ơn trước!

+0

Tại sao thử nghiệm đơn vị OpenXML phải khác với tiêu chuẩn. Bạn đang cố gắng xác thực nếu tài liệu có thể mở bằng lời hoặc nếu nó sẽ ổn chứ? –

+0

Nó không phải là khác nhau, nó chỉ là kỹ thuật diffucult. Kiểm tra điển hình là Arrange-Act-Assert. Vì vậy, câu hỏi là làm thế nào chúng ta có thể dễ dàng làm phần cuối cùng - khẳng định. Có thể sử dụng một số tự động hóa từ hoặc khung tự động hóa giao diện người dùng, nhưng tôi không thấy cách dễ dàng để thực hiện việc này. Vì vậy, tôi kết thúc với các bài kiểm tra tạo báo cáo và mở bằng lời nói, vì vậy tôi tự kiểm tra xem báo cáo có ổn không. Nó không phải là một thử nghiệm đơn vị "thuần túy", nhưng tốt hơn là chạy ứng dụng đầy đủ để tạo các báo cáo cần thiết. Ngoài ra, tôi đang thử nghiệm mã kiểm tra hoạt động trực tiếp với Open XML, tất cả các phần khác mà tôi đã tách ra và thử nghiệm với các bài kiểm tra đơn vị thông thường. – Andrii

Trả lời

5

Không, tôi chưa thực hiện thử nghiệm đơn vị tạo MS Word Document, nhưng như Ingó Vals nói, nó không khác biệt với bất kỳ hình thức kiểm tra đơn vị nào khác.

1) [Tùy chọn - để đảm bảo rằng bạn hiểu chính xác việc sử dụng SDK cho nhu cầu của bạn]. Tìm hiểu cách ứng dụng của bạn sẽ thúc đẩy SDK. Viết một số tập lệnh thử nghiệm bắt chước chức năng dự định và đảm bảo rằng các tài liệu Word mà chúng tạo ra đáp ứng được kỳ vọng của bạn.

2) Tạo giao diện (hoặc giao diện) chứa các phương thức tương ứng với chức năng bạn cần để tạo tài liệu. Lưu ý: giao diện không cần cung cấp đầy đủ chức năng của OpenXML SDK - chỉ có chức năng mà bạn cần cho ứng dụng của mình.

3) Tạo thực hiện cụ thể của giao diện của bạn, mà sẽ chuyển tiếp các cuộc gọi đến OpenXML SDK

4) Sử dụng giao diện mà bạn đã tạo trong ứng dụng của bạn để thực hiện các thế hệ tài liệu.

5) Sử dụng NUnit và NMock (hoặc tương tự) để viết các bài kiểm tra đơn vị điều khiển lớp tạo ứng dụng của bạn. Các xét nghiệm này nên sử dụng một giao diện giả, chứ không phải là một thể hiện của việc thực hiện cụ thể. Bây giờ bạn có thể khẳng định trong các bài kiểm tra của bạn rằng lớp thế hệ của bạn hoạt động như bạn mong đợi.

+0

Cảm ơn bạn đã trả lời, nhưng vấn đề là tôi bị tấn công trong mã kiểm tra trực tiếp thao túng Open XML SDK. Tất cả những thứ còn lại tôi có thể tách rời hoặc chế giễu, điều đó rõ ràng. Sử dụng mocks insdead thực sự gọi Open XML SDK là không theo ý thích của tôi, như những gì tôi muốn kiểm tra là mã của tôi hoạt động tốt với SDK. Ai đó có thể lập luận rằng đó không phải là thử nghiệm đơn vị thuần túy, nhưng đó là điều thực sự bị thiếu trong bài kiểm tra hiện tại của tôi. – Andrii

+1

Những gì tôi mô tả là đơn vị kiểm tra mã của bạn. Tôi sẽ gọi những gì bạn muốn thử nghiệm tích hợp. Trong trường hợp này, tôi đoán bạn có thể lấy SDK để xuất XML từ và viết một phương thức so sánh DOM kết quả với DOM mà bạn mong đợi. –

+0

Yep, đơn vị hoặc tích hợp hoặc tự động hóa giao diện người dùng hoặc những gì sẽ hoạt động. Để tổng hợp bất kỳ loại thử nghiệm tự động nào sẽ cho phép xác minh (Khẳng định một phần của thử nghiệm). Sẽ kiểm tra so sánh DOM. Cảm ơn rất nhiều! – Andrii

0

Cảnh báo về OpenXML SDK 2.0 và mã hợp lệ ....

Tôi đã tạo ra các tài liệu OpenXML Powerpoints rằng xác nhận sử dụng XML SDK công cụ 2.0 và làm việc tại Office 2007 trên máy tính của tôi, nhưng khi mở tài liệu trên máy tính khác sử dụng Office PowerPoint 2007 nó than phiền và nói định dạng không hợp lệ

XML SDK 2,0 http://www.microsoft.com/downloads/details.aspx?FamilyId=C6E744E5-36E9-45F5-8D8C-331DF206E0D0&displaylang=en

2

tôi đang thực sự làm một cái gì đó tương tự với OpenXML SDK cho các bảng tính và tôi thực sự chỉ viết mã api OpenXML mở file từ một strea m cho mục đích thử nghiệm. Bài kiểm tra đơn vị không thực sự cho bạn biết đủ vì bạn cần biết liệu đó có phải là tệp hợp lệ hay không.

// There should be a sheet for every team 
[TestMethod] 
[HostType("Moles")] 
public void CaseExportTeamSheetsTest() 
{ 
    IRepository<ServiceTbl, ServiceTbl> ServiceRepository; 
    CaseController target; 
    BuildCaseControllerMoledCases(out ServiceRepository, out target); 
    FileStreamResult actual = target.Export(); using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(actual.FileStream, false)) 
    { 
     var services = ServiceRepository.All; 

     foreach (var item in services) 
     { 
      // get a worksheet foreach service 
      var sheets = spreadsheetDocument.WorkbookPart.Workbook.Descendants<Sheet>().Where(s => s.Name == item.ServiceName); 
      Assert.IsTrue(sheets.Count() > 0); 
     } 
    } 

    actual.FileStream.Close(); 
    actual.FileStream.Dispose(); 
} 
Các vấn đề liên quan