2009-08-05 9 views
3

winform 응용 프로그램의 테스트를 자동화하려고합니다. 테스트 코드와 동일한 프로세스에서 실행 중이므로 닷넷 컨트롤을 찾고 사용자 액션을 시뮬레이트하는 것이 매우 쉽습니다. 그러나 메시지 상자 (표준 MessageBox.Show 메서드를 사용하여 만든)로 조금 붙어 있습니다. 어떻게하면 그것을 잡아서 버튼이 눌린 것을 시뮬레이션 할 수 있습니까?프로그래밍 방식으로 메시지 상자 찾기 및 단추 클릭 생성

답변

2
당신은 아마 WinAPI를이 (FindWindowEx, 요법)를 호출 사용하고를 전송해야합니다

LMB 다운 및 최대 버튼 핸들 메시지

+0

일반적으로 UI 자동화 (내가 링크 한 것)는 더 높은 수준의 방법입니다. 이것은 유효합니다 [그리고 그 기준으로 +1했습니다] –

+0

일부 코드를 붙여 주실 수 있습니까? 나는 win api로 경기를 해본 적이 없다. – Grzenio

3
  • codeplex.com/white -

  • testautomationfx.com 무료 - 상업하지만 아주 좋은

2

캡션을 알고 있다면 (고유 한 경우) Application.OpenForms를 반복하여 찾을 수 있습니다.

+0

그리고 단추는 어떻게 찾습니까? – Grzenio

6

증상보다는 증상을 치료하는 것이 좋습니다. UI의 목에 통증이 있습니다 - 이

는 모든 모달 대화 팝업을 분리하기위한 인터페이스를 사용하여 읽는 데 몇 분 정도 걸릴 테스트 자동화. 그런 다음 아무 것도하지 않거나 미리 정해진 테스트 값을 반환하는 인터페이스의 모의 구현을 대체 할 수 있습니다. 물론 실제 구현은 실제 대화 모달 팝업 (2 링크에서)이 같은

public class UserInterrogator : IUserInterrogator 
{ 
    private Form owner; 

    public UserInterrogator(Form owner) 
    { this.owner = owner; } 

    public Font GetFontFromUser() // member of the IUserInterrogator interface 
    { 
     FontDialog fd = new FontDialog(); 
     fd.ShowDialog(owner); 
     return fd.Font; 
    } 
} 

더 쉬운 방법은 대화 상자를 발견하고/그것을 죽이는 종료 코드를 작성하는 물론입니다. 어떤 사람들은 Win32 API와 NUnitForms로 성공한 것을 보았습니다 ...

0

autoit 스크립트 시스템을 사용할 수 있습니다.

하지만 단위 테스트의 기본 원칙이 "단위"이기 때문에을 구체화하기 위해 을 제안합니다. 여기서 단위는 다른 클래스 나 실제 세계에서 분리 된 클래스입니다.
이 원리는 훌륭한 클래스 디자인을 제공하며 소프트웨어가 폭발하거나 다른 좋은 것들을 피하는 데 도움이됩니다.

관련 문제