2011-12-15 36 views
11

Tôi đã tìm thấy lớp TestExecution, hiển thị một loạt các sự kiện vô cùng hữu ích. Tuy nhiên, tôi không thể tìm thấy một tham chiếu đến nó ngoài tài liệu của MSDN, và tài liệu không cung cấp bất kỳ gợi ý nào về cách nó được sử dụng hoặc cách tôi có thể tham chiếu đến một cá thể trong khi chạy thử nghiệm.Mục đích của lớp TestExecution trong MSTest là gì?

Tìm bằng .NET Reflector không hữu ích - TestExecution được thực hiện bởi một lớp khác, UnitTestExecution, là nội bộ. Tôi không thể tìm thấy bất kỳ tài liệu tham khảo nào khác cho bất kỳ lớp nào trong tất cả các thư viện Microsoft.VisualStudio.QualityTools. *, Không dưới dạng triển khai thêm cũng như tham chiếu như các loại thuộc tính trong bất kỳ lớp nào khác.

Tôi làm cách nào để có quyền truy cập vào các sự kiện này?

+0

Trông giống như một lớp trừu tượng, do đó bạn có thể phải lấy được từ nó và thực hiện một số phương thức/thuộc tính trừu tượng. – Bernard

+0

Không nhất thiết ... Tôi nghĩ có khả năng trừu tượng hơn được sử dụng bởi khung công tác. Vì nó là một lớp công khai, và vì UnitTestExecution không phải là, nó có vẻ tuân theo mô hình vạch trần trừu tượng, nhưng không phải là việc thực hiện. Thông thường, có một cách để có được một tham chiếu đến một cá thể trừu tượng hóa (như với thuộc tính TestContext, trong đó TestContext cũng là một lớp trừu tượng), nhưng tôi đã không thể tìm thấy nó. –

+0

Điều này có vẻ giống như một trong những tình huống mà "yêu cầu tác giả" sẽ là tốt nhất. – Bernard

Trả lời

10

Ví dụ TestExecution được cung cấp cho bạn khi triển khai TestExtensionExecution tùy chỉnh. Nó cung cấp phương thức Initialize, bạn có thể ghi đè lên để đăng ký các sự kiện thử nghiệm.

Điều này thường là một phần của việc triển khai thuộc tính thử nghiệm tùy chỉnh trong MSTest.

Sửa Để tạo mở rộng thử nghiệm của riêng bạn, hãy bắt đầu với việc tạo ra một thuộc tính mới có nguồn gốc từ Microsoft.VisualStudio.TestTools.UnitTesting.TestClassExtensionAttribute, mà là một lớp trừu tượng đòi hỏi bạn phải cung cấp một TestExtensionExecution thông qua phương thức GetExtension().

Áp dụng thuộc tính của bạn với một trong những phương pháp thử nghiệm của bạn và bạn sẽ có thể đăng ký vào các sự kiện trong thời gian thử nghiệm (bên thực hiện của bạn TestExtensionExecution trả về bởi thuộc tính)

Lưu ý rằng bạn cũng đã thực hiện một ITestMethodInvoker mà bạn có thể tạo từ thuộc tính TetMethodInvokerContext.TestMethodInfo được cung cấp cho phương thức TestExtensionExecute.CreateTestMethodInvoker.

+1

Bạn định cấu hình một trong các tiện ích mở rộng này để sử dụng như thế nào? –

+0

Tôi muốn thông tin này đã là một phần của tài liệu MSTest trên MSDN. –

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