내 코코아 애플리케이션의 GUI 부분에 대한 단위 테스트를 작성하고 싶습니다.Xcode에서 GUI의 자동화 된 단위 테스트를 작성하려면 어떻게해야합니까?
교과서 단위 테스트에는 테스트중인 단위를 호출하는 테스트 프레임 워크와 테스트 케이스가 있습니다. 그 단위 아래의 모든 코드가 조롱 당합니다. 따라서 입력과 출력 모두 제어되고 모니터링됩니다. 테스트중인 유닛의 코드 만 테스트됩니다.
테스트중인 유닛이 내 GUI 인 곳에서 동일한 작업을 수행하고 싶습니다.
1) GUI 컨트롤을 조작하고 검사 할 코드를 작성할 수있는 프레임 워크를 설정하십시오.
2) 내 GUI 컨트롤을 실제 인스턴스가 아닌 실제 코드의 mock에 연결하십시오.
3) 컨트롤을 조작하는 테스트를 실행 한 다음 mock 객체를 검사하여 올바른 매개 변수로 올바른 메소드가 호출되었는지 확인하고 GUI를 검사하여 mock 객체의 응답이 위젯에서 올바른 변경을하는지 확인합니다 .
누구든지이 작업을 수행합니까? 그렇다면 어떻게? 내가 어떻게이 일을 할 수 있을지에 대한 아이디어가 있니?
감사합니다,
팻
(편집) 매우 구체적인 예제를 제공하기 위해, 내가 할 :
1) '내 메뉴'메뉴 항목을 선택하는 테스트 케이스 작성 -> '를 MyItem '. 이 테스트 케이스에서는 [AppDelegate doMyItem] 메서드가 정확하게 한 번 호출되고 AppDelegate의 다른 메서드가 호출되지 않는지 확인하고 싶습니다.
2) AppDelegate의 모의 객체를 생성합니다. (나는 이것을하는 법을 알고있다.)
3) 어쨌든 (여기에 핸드 오버) AppDelegate의 mock 인스턴스가 실제 인스턴스 대신 연결되도록 내 애플리케이션을 연결한다.
4) 테스트를 실행하십시오. 조심해라. 1) MyMenu를 아직 만들지 않았기 때문이다. 2) 아직 MyItem을 만들지 않았습니다. 3) 아직 'doMyItem'메소드를 작성하지 않았으므로 MyItem을 [AppDelegate doMyItem]에 연결하는 IB 작업을 수행하지 않았습니다.
5) 위의 네 가지 문제를 해결하십시오 (그 날 정말 열정적이라면 한 번에 하나씩).
6) 테스트를 다시 실행하고 성공한 것으로 간주하십시오.
질문이 명확합니까?
안녕 Patros, , 나는 확실히 그것을 '사용자와 같은 입력을 생성'에게 어떤 의미인지 표시되지 않습니다. 예를 들어 줄 수 있습니까? 감사합니다. Pat –
보고 싶은 키보드 및 마우스 이벤트를 생성하기 만하면됩니다. API에 액세스하거나 사용자 정의 드라이버를 작성하여 원시 UI 클래스를 랩핑하고 이벤트를 하이재킹하여이를 수행 할 수 있습니다. – patros