QTest
은 단위 테스트를 별도의 실행 파일로 구성하는 것이 좋습니다. 이에 대한 특별한 매크로가 있으며, 메인 함수를 생성합니다 : QTEST_MAIN
.qExec을 사용하여 Qt 테스트 스위트 생성
이 방법은 매우 깨끗하지는 않지만 모든 테스트를 한 번에 실행하는 것이 훨씬 유용합니다.
Qt: run unit tests from multiple test classes and summarize the output from all of them
http://www.davideling.it/2014/01/qtest-multiple-unit-test-classes/
https://alexhuszagh.github.io/2016/using-qttest-effectively/
솔루션은 매크로 QTEST_MAIN
를 사용하여 포기했다 : 그래서 내가 이렇게 어떤 가능성이 있는지 검색하고 나는 몇 사람이 같은 솔루션을 제안 발견 실행하려는 테스트를 실행하는 곳에서 자신의 main
함수를 작성하십시오.
int main(int argc, char *argv[])
{
int status = 0;
{
TestA ta;
status |= QTest::qExec(&ta, argc, argv);
}
{
TestB tb;
status |= QTest::qExec(&tb, argc, argv);
}
return status;
}
그러나 좋은 아이디어 인 것으로 나타났습니다. 문제가 있습니다. 파일과 실행 개인에게 로깅 테스트 출력에 대한 명령 줄 옵션으로,
독립 테스트 어플리케이션,이 기능이 한 번 이상 더 호출 할 수 없습니다 :
qExec
에 대한 Qt's documentation이 같은 소리 부분이있다 테스트 기능은 올바르게 작동하지 않습니다.
그 사람들이 밝힌 해결책은 다음과 같이 제안합니다. qExec
번 이상 실행 중. 누구든지 정확히 command-line options for logging test output to files and executing individual test functions will not behave correctly
정확히 무슨 뜻인지 설명 할 수 있습니까?
정확히이 접근법에 문제가있을 수 있습니까?
FWIW,이 명백한 결핍 역시 나를 혼란스럽게 만들었습니다. 다른 테스트 러너 프레임 워크 (예 : GoogleTest) 만 사용합니다. 슬롯과 신호를위한 Qt 전용 기계 장치와 결합 (https://stackoverflow.com/a/12687255/14637) 할 수 있습니다. 또한 https://stackoverflow.com/a/3804999/14637에 대한 의견을 통해 귀하의 질문에 대한 답변을 얻을 수 있습니다. – Thomas