2011-12-14 1 views
2

VS 2010 Ultimate에서 Microsoft CUIT (코드 된 UI 테스트)를 사용하여 ASP.Net 4.0 사이트를 테스트하고 있습니다.ASP.Net 사용자 정의 컨트롤이나 웹 페이지에 속성을 추가하고 Microsoft 코딩 된 UI 테스트에서이 속성을 읽는 방법? (CUIT)

ASP.Net 사이트에 대한 소스 코드가 있으므로 필요에 따라 수정할 수 있습니다.

녹음/재생 작업이 있습니다.

테스트 메소드에 간단한 assert 문을 써서 UITestControl 하위 항목 (HTML 링크, 테이블 등)의 속성을 확인하고 예상 값과 비교할 수 있습니다.

사용자 컨트롤 (ASCX) 및 내 사이트의 페이지에 속성을 추가하여 유용한 값을 테스트 코드로 다시 전달하고자합니다.

예를 들어 현재 사용자의 역할에 따라 다른 메뉴 항목 집합을 표시하는 메뉴를 구현하는 사용자 정의 컨트롤이 있습니다.

테스트 스크립트에서 다양한 메뉴 항목을 클릭하여 해당 메뉴 항목이 있는지 여부를 확인하는 대신 사용자 정의 컨트롤에 속성을 추가하려고합니다. 이 속성은 정보를 호출자에게 반환하고 메뉴 및 메뉴 항목을 나열합니다.

WinForms에서이 작업을 수행하는 방법에 대한 정보가 Net에서 발견되었지만이 코드는 액세스 가능성에 의존합니다.이 접근성은 WinForms의 CUIT에만 유용합니다. 마찬가지로, WPF/SL로 어떻게하는지에 대한 정보를 찾았습니다.

대답은 UITestControl.NativeElement 속성을 가져온 다음 GetProperty()를 재정의하는 메서드를 호출하는 것과 관련 될 수 있지만이 접근 방식을 사용할 수는 없습니다.

누구나 ASCX 또는 ASPX 페이지에 속성을 추가하는 방법을 보여주는 간단한 코드 샘플을 제공 할 수 있습니다.이 속성은 C# 코드 숨김으로 작성하고 Microsoft Coded UI Testing (CUIT) 코드로 읽을 수 있습니까?

감사합니다.

아담 Leffert http://www.leffert.com

답변

1

나는이 질문에 대한 답을 발견하지 않은,하지만 근본적인 문제를 해결하기 위해 몇 가지 코드를 작성했습니다.

사용자 정의 컨트롤에 속성을 추가하면 UI 컨트롤이 사용자 컨트롤로 구현 된 경우에만 유효성 검사 데이터가 테스트중인 컨트롤과 함께 유지된다는 것을 알았습니다.

내가 커버 할 필요가 적어도 두 개의 다른 경우가 있습니다 예를 들어, 페이지에 추가

1) 타사 컨트롤 등 ASPxGridView, ASPxTreeView을 볼 수 없습니다

2) 항목 UI에서, 예를 들어 현재 사용자에 대한 사용자 프로파일 데이터.

웹 앱에서 CUIT 인증 코드를 실행하는 경우 사용할 수있는 데이터는 DOM 데이터입니다. 즉, 브라우저 창의 콘텐츠에 대한 문서 객체 모델의 콘텐츠를 나타내는 트리입니다. 요청 객체, .Net 페이지 객체 등은 없습니다.이 DOM 데이터는 UIMap 객체를 통해 액세스 할 수 있습니다.

타사 컨트롤을 사용자 정의 컨트롤로 묶지 않으려면 테스트중인 응용 프로그램을 방해하여 그리드, 트리 뷰의 속성 및 이벤트에 접촉하는 응용 프로그램 코드를 다시 작성해야하기 때문에 , 등등. 코드를 테스트하기에 너무 복잡하다.

그래서 문자열 값 사전과 ITestable 하위 목록이 포함 된 코드 인터페이스 (ITestable)를 만들었습니다.

마스터 페이지의 LoadComplete 이벤트 처리기에서 마스터 페이지에 대한 ITestable을 만들고 그 자체로 자식 목록을 포함 할 수있는 자식 페이지에 대한 자식 ITestable 개체로 목록을 채 웁니다.

이 객체를 JSON으로 직렬화 한 다음 마스터 페이지의 숨겨진 필드에 저장합니다.

숨겨진 필드를 UIMap에 추가했습니다.

테스트 유효성 검사 코드는 ITestable을 deserialize 한 다음 유효성 검사가 필요한 값을 찾습니다.

컨트롤은 자체 ITestable 개체를 만듭니다. 따라서 컨트롤은 유효성 검사 값을 읽으려는 UI를 조작하도록 테스트 코드를 강제하지 않고 유효성 검사에 필요할 수있는 값으로 개체를 쉽게 채울 수 있습니다.

예를 들어, 트리보기는 테스트 코드가 각 노드를 클릭하고 거기에 표시된 값을 읽지 않아도 내용을 반환 할 수 있습니다. 추가 속성 (표시 가능, 사용 가능 등)은 각 ITestable 객체의 값 사전에 저장할 수 있습니다.

CUIT에는 매우 강력한 기능이 있습니다. Microsoft가 이러한 단순한 검증 문제를 해결하기위한 몇 가지 모범 사례를 문서화한다면 매우 감사 할 것입니다. Microsoft 설명서를 읽었지만 웹 응용 프로그램에 대해서는이 항목을 많이 찾지 못했습니다.