Qt4에서 graphicsview 아키텍처를 광범위하게 사용하는 응용 프로그램이 있는데 ui 구성 요소의 자동화 된 테스트를 시작하고 싶지만 과 관련된 리소스를 찾을 수 없습니다 qgraphicsview/qgraphicswidget 기반 클래스를 테스트하거나 어떻게 테스트해야합니까?단위 테스트 방법 qt 그래픽보기 위젯/항목
답변
단위 테스트 QGraphicsView에서 문제가 발생했습니다. 나의 가장 큰 문제는
마우스 이벤트
QTest::mousePressEvent(view, Qt::LeftButton, 0);
결과 "MousePress은"콘솔에 기록하기 위젯
를 받아 허용되지, 내 이벤트 처리기가 호출되지 점점 결코이었다. 내가 찾은 해결책은 뷰포트에 이벤트를 보내는 아닌를 QGraphicsView 자체 :
예상대로 내QGraphicsView
서브 클래스에 이벤트를 전송
QTest::mousePressEvent(view->viewport(), Qt::LeftButton, 0);
. 이렇게하면 그래픽 항목이 적절하게 이벤트를 수신하고 있는지 확인하기 위해 상위 수준에서 전체 그래픽보기를 테스트 할 수 있습니다.
이제 진짜 질문에 답하십시오.
그래픽을 많이 사용하는 클래스는 notoriouslyhard에서 test입니다. 링크 된 페이지에서 조언을 얻으려면 (1) 가능한 한 로직 및 프리젠 테이션을 분리하고 (2) 너무 낮은 수준에서는 테스트하지 않는 것이 좋습니다.
프리젠 테이션과 로직을 분리하는 것은 일반적으로 좋은 방법이지만, 로직 대량이 프리젠 테이션을 만드는 데 소비되면 어려울 수 있습니다! QGraphicsItem 객체의 경우에는 우리에게 이벤트를 시뮬레이트하기위한 편리한 QTest 함수가 없습니다. 그래서
void MyGraphicsItem::pressed(const QPointF &pos, const QPointF &last)
를 사용, 의미 유형을 사용하여 의미있는 사건이 실제로 예를 들어 테스트하지 QGraphicsSceneEvent 서브 클래스 중에 구성 할 수 있습니다에 응답하는 클래스를 디자인 한 후 mousePressEvent
방법은 QGraphicsSceneMouseEvent에서 관련 정보를 추출하고 자신의 전화가 pressed
방법. 그러면 테스트에서 메서드를 사용할 것이므로 인공 QGraphicsSceneEvents를 만드는 것에 대해 걱정할 필요가 없습니다.
의 문제는 무엇입니까?을 테스트하는 것은 상당히 어렵습니다. 예를 들어 그래픽 항목의 위치를 테스트에 하드 코딩하지 않을 것입니다. 그래픽 엔진이 당신 아래에서 변화하고 아이템이 약간 다르게 표현되면 어떻게 될까요? 대신 의미 론적으로 의미있는 테스트에 집중해야합니다. 이 두 개체가 충돌합니까? 이 항목의 색상이 선택시 변경됩니까?
여기의 기본 아이디어는 QGraphicsView의 수준이 아닌 응용 프로그램의 의미 수준에서 클래스를 디자인하고 테스트하는 것입니다. QGraphicsSceneEvents의 앱 이벤트 번역을 테스트하는 제대로 구성된 테스트를 원하는 수는 없지만 대부분의 테스트보다 취약하다는 것을 이해해야합니다.
- 1. Qt 단위 테스트 설정
- 2. Qt Creator의 단위 테스트 설정
- 3. QT : 단위 테스트 세분화 오류
- 4. 단위 테스트 조언 - .asmx 단위 테스트 방법
- 5. Qt, 단위 테스트 및 모의 객체
- 6. 단위 테스트 작성 방법
- 7. 단위 테스트 'SetDefaults()'방법
- 8. AOP 단위 테스트 방법?
- 9. IDictionary의 단위 테스트 방법
- 10. 단위 테스트 방법
- 11. 단위 테스트 방법 IDataErrorInfo?
- 12. 단위 테스트 TimeZones 방법?
- 13. 단위 테스트 서브 클래스 단위 방법
- 14. .NET 단위 테스트 - applicationSettings 테스트 방법
- 15. 단위 테스트 코드 생성 방법
- 16. 단위 테스트 방법 BackgroundWorker C#
- 17. T-SQL 단위 테스트 방법
- 18. 단위 테스트
- 19. Python 단위 테스트 HTML로보고
- 20. 단위 테스트 단위 테스트에 새로운
- 21. 단위 테스트 웹용?
- 22. 단위 테스트 스레드?
- 23. 코드 의존성 단위 테스트
- 24. 테스트 하네스 생성 (단위 테스트)
- 25. Qt 유닛 테스트 의존성 문제
- 26. ASP.NET MVC의 단위 테스트
- 27. 어떻게 단위 테스트에이 방법을 단위 테스트 저장소 방법
- 28. C++ Qt : 비트 단위 연산
- 29. CMake로 Qt 테스트 빌드
- 30. SqlMapClientDaoSupport를 확장하는 DAO 단위 테스트 방법
내 연결된 질문에 대한 아이디어가 있습니까? 뷰포트()를 사용하면 QGraphicsItem을이 방법을 사용하는 마우스 그래버 항목으로 설정하지 않는 것입니까? – paulm