Qt 위젯을 테스트하기 위해 cxxunit 또는 다른 단위 테스트 프레임 워크 (QtTestLib 제외)를 사용할 수 있습니까?cxxtest 프레임 워크 및 valgrind를 사용하여 qt 객체 테스트
예, 두 개의 추가 질문이있는 경우 :
- 어떻게?
- valgrind를 사용하여 단위 테스트를 실행하고 있으므로이 오류를보고 할 수 있습니까?
Qt 위젯을 테스트하기 위해 cxxunit 또는 다른 단위 테스트 프레임 워크 (QtTestLib 제외)를 사용할 수 있습니까?cxxtest 프레임 워크 및 valgrind를 사용하여 qt 객체 테스트
예, 두 개의 추가 질문이있는 경우 :
예, 가능합니다. 특히 cxxunit에 대해서는 잘 모르겠지만 이론적으로는 가능합니다.
UI를 테스트하려면 Squish과 같은 UI 테스트 도구를 사용하는 것이 좋습니다. 유닛 테스트 위젯 자체가 아닌 위젯의 논리를 테스트하는 것이 더 적합하다고 생각합니다. 정말로 Qt 위젯을 단위 테스트하고 싶다면 QtTestLib보다 나은 솔루션이 있다고 생각하지 않습니다.
Valgrind : valgrind plugin for Squish이 있습니다. 나는 그 자신을 사용하지 않았다. 다른 단위 테스트는 당연히 valgrind에서 쉽게 실행될 수 있습니다. 그러나이 작업을 완전히 자동화하는 솔루션을 모릅니다. 하나는 코드를 소유하고있는 외부의 모든 경고를 실제로 억제해야합니다. x11 libs는 유닛 테스트가 실패하도록 트리거하지 않습니다.
우리는 이미 스 퀴시를 사용하고 있지만 스 퀴시는 단위 테스트를위한 것이 아닙니다. 나는 단위 테스트를 거쳐야하는 위젯을 정말로 무거운 논리로 보았습니다. –
1)하지만 마우스를 클릭하는 등의 방법을 에뮬레이션하는 방법은 무엇입니까? 2) qt를 사용할 때 실제 메모리 문제가 무엇인지는 분명하지 않습니다 (적어도 나에게). 나는 qt가 부모를 가진 위젯의 파괴를 관리한다는 것을 안다. –
@VJo : 응용 프로그램 또는 단위 테스트 실행 파일에서 실행하십시오. 부모가있는 위젯의 파괴는 valgrind에서 볼 수 있어야하므로 메모리 누수로 표시되지 않습니다. 그러나 Qt 응용 프로그램에서 valgrind를 마지막으로 실행 한 경우 Qt에서 정리되지 않은 정적 할당이있었습니다. –
좋아, 소멸자가 valgrind에서 볼 수 있지만 좀 더 자세한 정보를 제공 할 수 있습니다. 단위 테스트에서 위젯의 부모는 무엇이되어야합니까? QApplication 객체입니까? QApplication의 어떤 누수가 false입니까? –