샘플 Excel 확장: TechnologyManager 클래스Sample Excel Extension: TechnologyManager Class

이 클래스는 <xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyManager> 클래스를 확장하고 Microsoft ExcelMicrosoft Excel 확장용 핵심 서비스를 제공합니다.This class extends the <xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyManager> class and is responsible for providing core services for the Microsoft ExcelMicrosoft Excel extension. 기본 클래스에는 여러 가지 메서드가 있지만, 이 샘플에서는 이러한 메서드 중 일부만 사용합니다.Although the base class has many methods, only a subset of them is used in this sample.

일부 메서드는 속성 값만 반환합니다.Some methods just return a property value. 개발자는 대부분의 메서드를 통해 코딩된 UI 테스트 엔진에서 기본적으로 제공되는 기본 알고리즘을 재정의할 수 있습니다.Many of the methods are intended to allow the developer to override default algorithms build into the coded UI test engine. 이러한 메서드는 <xref:System.NotSupportedException>를 throw하거나 null을 반환하여 기본 알고리즘을 사용하도록 프레임워크에 알립니다.These methods throw a <xref:System.NotSupportedException> or return null, which tells the framework to use the default algorithm.

기본 기술의 복잡도에 따라서는 기술 관리자 코드를 개발하는 데 몇 주에서 몇 달까지 걸릴 수 있습니다.Depending on the complexity of the underlying technology, developing the technology manager code could take from a few weeks to a few months. Excel에서는 매우 포괄적으로 활용 가능한 기술 관리자를 만들 수 있습니다.Excel provides an opportunity to create a potentially very extensive technology manager. 이 예제에서는 의도적으로 Excel 워크시트 및 셀만 사용하며 제한된 서식을 사용합니다.This example is intentionally limited to Excel worksheets and cells and uses limited formatting.

기술 관리자 코드는 가능한 경우 Communicator 클래스를 통해 열리는 .NET Remoting 채널을 사용하여 Excel 프로세스에서 실행되는 추가 기능에서 정보를 추출합니다.When it is possible, the technology manager code uses the .NET Remoting channel opened by the Communicator class to extract information from the Add-In running in the Excel process.

COM 표시 여부COM Visibility

이 클래스와 <xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyElement> 클래스를 확장하는 각 요소 클래스에는 모두 값이 true인 <xref:System.Runtime.InteropServices.ComVisibleAttribute>가 포함되어 있습니다. 이 속성을 통해 이러한 클래스가 COM에 표시됩니다.Notice that this class and each of the element classes that extend the <xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyElement> class all have the <xref:System.Runtime.InteropServices.ComVisibleAttribute> with a value of true to make sure the classes are visible to COM.

TechnologyName 속성TechnologyName Property

<xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyManager.TechnologyName%2A?displayProperty=fullName> 속성의 이 재정의는 확장의 기타 모든 구성 요소에 대한 기본 기술을 식별하는 고유하고 의미 있는 이름을 제공해야 합니다.This override of the <xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyManager.TechnologyName%2A?displayProperty=fullName> property must provide a unique and meaningful name that identifies the underlying technology for every other component of the extension. 이 확장의 경우 값은 "Excel"입니다.For this extension, the value is "Excel".

GetControlSupportLevel 메서드GetControlSupportLevel Method

<xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyManager.GetControlSupportLevel%2A?displayProperty=fullName> 메서드의 이 재정의는 제공된 핸들로 표시되는 컨트롤에 대해 기술 관리자가 제공할 수 있는 기술 수준을 나타내는 숫자를 반환합니다.This override of the <xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyManager.GetControlSupportLevel%2A?displayProperty=fullName> method returns a number that indicates the level of support that the technology manager can offer for the control represented by the provided handle. 반환된 값이 클수록 기술 관리자의 컨트롤 지원 가능 수준도 높아집니다.The higher the returned value, the more the technology manager can support the control. 이 문서의 예제에서는 메서드가 컨트롤이 포함된 창을 확인하여 컨트롤이 Excel 워크시트이면 최고 값을 반환하고, 그렇지 않으면 지원이 제공되지 않음을 나타내는 0을 반환합니다.In this case, the method checks the window that contains the control and if it is an Excel Worksheet, the method returns the highest value; otherwise, it returns zero, which indicates that no support is provided.

요소를 가져오는 메서드Methods to Get an Element

코딩된 UI 테스트 프레임워크는 몇 가지 중요한 메서드를 사용하여 핸들, 화면의 점 또는 다른 기술의 요소를 제공해 기술과 관련된 요소를 가져옵니다.There are several important methods that are used by the coded UI testing framework to get an element specific to the technology by providing a handle, a point on the screen, or an element from a different technology. 이러한 메서드에 해당하는 코드에는 설명이 포함되어 있습니다.The code for these methods are self-explanatory. 기본 메서드는 다음과 같습니다.The base methods are as follows:

  • <xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyManager.GetFocusedElement%2A?displayProperty=fullName>

  • <xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyManager.GetElementFromPoint%2A?displayProperty=fullName>

  • <xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyManager.GetElementFromWindowHandle%2A?displayProperty=fullName>

  • <xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyManager.GetElementFromNativeElement%2A?displayProperty=fullName>

  • <xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyManager.ConvertToThisTechnology%2A?displayProperty=fullName>

ParseQueryId 메서드ParseQueryId Method

코딩된 UI 테스트를 만들 때 사용자는 테스트의 일부 또는 모든 컨트롤에 대해 속성 값을 지정할 수 있습니다.When a coded UI test is created, the user can specify property values for some or all the controls in the test. 이러한 속성 값은 테스트 프레임워크가 테스트 중에 특정 UI 컨트롤을 찾는 데 사용하는 검색 속성이라는 이름/값 쌍을 만드는 데 사용됩니다.These property values are used by the testing framework to create name-value pairs called search properties that are used to find specific UI controls during the test. 모든 검색 속성은 기술 내 모든 요소의 <xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyElement.QueryId%2A?displayProperty=fullName> 속성 값을 나타냅니다. 여기에는 모든 컨트롤도 포함됩니다.All the search properties together represent the value of the <xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyElement.QueryId%2A?displayProperty=fullName> property of every element in the technology, which includes every control. 테스트 중에는 컨트롤을 여러 번 확인해야 할 수 있으므로, 기술 관리자는 이 메서드를 사용하여 지정된 컨트롤의 검색 속성 구문 분석을 최적화할 수 있습니다.Because a control might have to be found several times during a test, this method gives the technology manager a way to optimize parsing of search properties for the given control. 또한 이 메서드는 프레임워크가 해당 컨트롤의 후속 검색에 사용할 수 있는 쿠키도 반환합니다.This method also returns a cookie that the framework can use for subsequent searches for that control. 메서드의 이 구현은 <xref:Microsoft.VisualStudio.TestTools.UITest.Extension.AndCondition.Match%2A?displayProperty=fullName> 메서드를 사용하여 검색 속성을 구문 분석합니다.This implementation of the method uses the <xref:Microsoft.VisualStudio.TestTools.UITest.Extension.AndCondition.Match%2A?displayProperty=fullName> method to parse the search properties.

MatchElement 메서드MatchElement Method

기술 관리자를 사용한 컨트롤 검색을 수행하려는 경우 <xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyManager.Search%2A?displayProperty=fullName> 메서드를 구현하여 가능한 일치 항목 배열을 반환하거나, 프레임워크가 자체 검색 알고리즘을 사용하도록 지시하는 <xref:System.NotSupportedException>을 throw할 수 있습니다.To perform a control search by the technology manager, you can implement the <xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyManager.Search%2A?displayProperty=fullName> method to either return an array of possible matches, or throw the <xref:System.NotSupportedException>, which tells the framework to use its own search algorithm. 어떤 방법을 사용하든 <xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyManager.MatchElement%2A> 메서드를 구현해야 합니다. 이 메서드에서도 이 구현은 <xref:Microsoft.VisualStudio.TestTools.UITest.Extension.AndCondition.Match%2A?displayProperty=fullName> 메서드를 사용합니다.Either way, you must implement the <xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyManager.MatchElement%2A> method where this implementation again uses the <xref:Microsoft.VisualStudio.TestTools.UITest.Extension.AndCondition.Match%2A?displayProperty=fullName> method.

이러한 메서드는 UI 계층에서 제공되는 요소의 부모, 자식 또는 형제를 가져옵니다.These methods get the parent, children, or siblings of the provided element from the UI hierarchy. 코드는 간단하며 명확하게 주석 처리되어 있습니다.The code is simple and clearly commented.

GetExcelElement 내부 메서드GetExcelElement Internal Method

이 내부 메서드는 Excel 요소에 대한 정보와 창 핸들을 가져오며 요청된 Excel 요소를 반환합니다.This internal method takes a window handle and information about an Excel element, and returns the requested Excel element.

참고 항목See Also

<xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyManager><xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyManager>
<xref:System.NotSupportedException><xref:System.NotSupportedException>
<xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyElement><xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyElement>
<xref:System.Runtime.InteropServices.ComVisibleAttribute><xref:System.Runtime.InteropServices.ComVisibleAttribute>
<xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyElement.QueryId%2A><xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyElement.QueryId%2A>
Microsoft Excel을 지원하도록 코딩된 UI 테스트 및 작업 기록 확장Extending Coded UI Tests and Action Recordings to Support Microsoft Excel