2009-11-24 45 views
13

Tôi đang làm việc trên macro VBA Excel sẽ lấy một số tệp excel, chà/làm sạch và tạo sổ làm việc với 2 trang tính - trang tính 1 là tệp 'bẩn' gốc, trang tính 2 là tệp được quét sạch.Làm thế nào để thiết lập một thử nghiệm đơn vị trong VBA Excel Macro?

Vì chúng tôi có 10 định dạng khác nhau ngay bây giờ và xuống đường 40+ .. Tôi muốn lưu đầu ra này cho một tập hợp tệp nhất định, sau đó viết một bài kiểm tra đơn vị có đầu vào gốc, chạy macro của chúng tôi, sau đó so sánh đầu ra của macro với đầu ra đã lưu, dự kiến ​​mà chúng tôi có.

Sau đó, bất cứ lúc nào xuống đường khi chúng tôi bảo trì, chúng tôi có thể nhanh chóng và dễ dàng chạy các bài kiểm tra đơn vị để đảm bảo chúng tôi không phá vỡ bất kỳ thứ gì đã hoạt động.

Đây là lần đầu tiên tôi làm việc với VBA. Tôi googled xung quanh cho khuôn khổ hoặc plug in và không thể tìm thấy nhiều giúp đỡ. Tôi đã tìm thấy một chức năng mà sẽ so sánh 2 toàn bộ bảng tính excel - vì vậy tôi có một phần xuống. Nhưng bây giờ tôi cần phải tìm ra cách để thực sự viết và thực hiện thử nghiệm đơn vị này. Viết bài kiểm tra đơn vị nên được khá thẳng về phía trước - nhưng làm thế nào để thực hiện nó? Tôi không muốn đặt một nút trên bảng tính cho biết 'chạy thử nghiệm đơn vị' ... Có cách nào trong VBA/Excel chỉ chạy một chức năng tùy ý, vì vậy tôi chỉ có thể nói nhấp chuột phải vào chức năng UnitTest của tôi và làm 'chạy'?

Bất kỳ phản hồi bổ sung nào về kế hoạch thử nghiệm đơn vị của tôi cũng sẽ được đánh giá cao. Cảm ơn một lần nữa.

Trả lời

9

Nếu là tôi, tôi sẽ tạo ra một bảng tính thứ hai tham chiếu bảng để được kiểm tra. (Vào công cụ> tài liệu tham khảo> trình duyệt) Sổ làm việc mới này có thể chứa tất cả các bài kiểm tra bạn muốn mà không phải làm hỏng sổ làm việc chính của bạn. Điều này cũng giúp bạn tự xây dựng giao diện cho chính mình nếu bạn muốn.

Là một mặt lưu ý, nếu bạn muốn ẩn các thủ tục từ Excel đơn Macro nhưng vẫn có thể tiếp cận với họ, ở phía trên cùng của mô-đun đặt của bạn:

Option Private Module 

Sau đó thực hiện tất cả các thủ tục mà bạn muốn có thể sử dụng "Công khai". Sau đó bạn có thể gọi chúng từ cửa sổ ngay lập tức (ctrl-g trong VBE) nhưng chúng sẽ không được liệt kê trong danh sách macro.

Nhưng nếu bạn giữ các bài kiểm tra đơn vị riêng biệt (như bạn có thể nên), thì bạn không thực sự phải lo lắng về các mô-đun Công/Tư.

+0

Cảm ơn bạn đã chọn Mẹo riêng cho mô-đun .. – peege

5

đã không nhìn nó trong nhiều năm, nhưng vbaUnit sử dụng để làm việc tốt ...

+0

cảm ơn, đã nhận thức được điều đó nhưng không chắc tôi nên so sánh các trang tính như thế nào. cảm ơn tất cả mọi người – dferraro

1

Chắc chắn, dưới sự Developer Tab (Excel 2007) có một nút Macros liệt kê tất cả các macro có sẵn mà bạn có thể chạy . Bạn sẽ chọn từ danh sách và nhấp vào Chạy. Các phiên bản cũ hơn có cùng chức năng này, nhưng tôi không thể nhớ chúng ở đâu.

Dưới đây là một liên kết cho phiên bản 2003

http://spreadsheets.about.com/od/advancedexcel/ss/excel_macro_5.htm

8

Rubberduck là một trình bổ sung VBE mã nguồn mở miễn phí, bao gồm khung kiểm tra Đơn vị tích hợp IDE và hoạt động trên hầu hết các Sản phẩm Office chính.

  1. Tải xuống và cài đặt latest release.
  2. Mở sổ làm việc Excel mà dự án VBA của bạn ở.
  3. Đi đến Công cụ >> Các khoản làm lạnh và thêm tham chiếu đến Rubberduck.
  4. Thêm mô-đun chuẩn mới.
  5. Thêm thuộc tính '@TestModule và tạo một thể hiện của các Rubberduck.AssertClass

    `@TestModule 
    
    Private Assert As Rubberduck.Assert 
    
  6. Bắt đầu viết các bài kiểm tra. Bất kỳ Sub phụ nào được đánh dấu bằng thuộc tính '@TestMethod sẽ được khám phá và chạy bởi Test Explorer.

    '@TestMethod 
    Public Sub OnePlusOneIsTwo() 
        Assert.AreEqual 2, Add(1,1) 
    End Sub 
    

Unit Test Explorer

Để biết thêm thông tin, vui lòng xem Unit Testing page of the project's wiki.

Tuyên bố từ chối trách nhiệm:Tôi là một trong những nhà phát triển của dự án.

+0

Thông tin tuyệt vời. Đối với những gì nó có giá trị, các hướng dẫn trên wiki được liên kết là nhiều hơn so với các hướng dẫn được đưa ra ở đây. – epotter

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