2014-10-12 6 views
3

Qt 5.3.2의 QTest를 사용하여 클래스에 대한 일부 단위 테스트를 실행하고 있습니다. VS2013 Express를 사용하여 테스터를 구축하고 있습니다. VS 프로젝트 파일은 qmake를 사용하여 .pro 파일에서 생성됩니다. 테스트를 실행하기 위해 QTEST_MAIN을 소스 파일에 추가했습니다.QTest 결과를 보는 방법

프로젝트가 빌드되고 테스터 실행 가능한 작업이 정상입니다. 그러나 결과를 보는 데 문제가 있습니다 (예 : 통과 출력). 테스트가 실행되는 동안 모든 테스트 출력을 수신하는 콘솔 창이 열립니다. 테스트가 끝나면 콘솔 창이 즉시 닫히고 실제로 표시된 내용을 볼 수 없습니다. 특히 어떤 검사가 실패했는지 나는 알 수 없습니다.

QTest는 기본 출력 채널로 stdout을 사용한다고 가정합니다. 그래서 VS 디버거 옵션 "표준 출력을 출력 창으로 리디렉션"을 시도했지만 효과가 없었습니다.

어떻게 작동하나요?

테스트 출력이 실제로 새로 연 콘솔 창으로 이동해야합니까? 그런데 왜 계속 열려 있지 않은가? 또는 전체 테스트 결과가 VS 디버거 출력 패널로 이동해야합니까? 출력을 리디렉션 할 수 있습니까?

+0

왜 당신은 단순히 콘솔 (명령 행)에서 테스트 (응용 프로그램)을 실행하지? VisualStudio는 그대로 두십시오. – vahancho

+0

테스트 된 코드를 디버깅하고 VS IDE를 사용할 때 테스트를 향상시키는 것이 훨씬 쉽기 때문입니다. 나는 그것이 IDE가 만들어지는 것을 의미합니다. 내가 가정하는 간단한 해결책이 있어야합니다. – Silicomancer

답변

2

귀하의 Visual Studio 버전에 Visual Studio Add-in이 설치되어 있습니까? 그렇지 않다면 qt-project.org/downloads에서 다운로드해야합니다.

간단한 qt test을 입력하고 *.pro 파일을 Visual Studio 안에 가져 와서 테스트를 실행했습니다. 나를 위해 모든 것이 잘 작동하고 창은 테스트의 이력서를 보여주는 열려 :

enter image description here

내가의 example를 작성하는 프로젝트 설정을 Visual Studio Add-in를 사용하여 비교 Visual Studio에서 그것을 가져 오는 것이 좋습니다 무엇. 창을 열어두기 위해 어딘가에서 플래그를 변경해야 할 가능성이 있습니다.

Console (/SUBSYSTEM:CONSOLE) 링커 옵션 세트가 필요할 수도 있습니다. 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 Properties 프로젝트로 이동하여 Configuration Properties>Linker>System을 선택하십시오. 오른쪽 창의 Subsystem 속성에 대해 오른쪽 열의 드롭 다운 상자를 클릭합니다. 이제 Console (/SUBSYSTEM:CONSOLE)을 선택하고 (Ctrl + F5이 아니라F5) (1) 테스트를 다시 실시하십시오.

Debug 모드에서 테스트를 실행하면 (즉, F5을 누르면) 창이 열리지 않습니다. 당신이 영업을하고자하는 경우에 당신은 테스트 소멸자에 getch() 호출을 추가해야하고, 테스트가 완료되면 창 (예 : Enter) 입력을 기다리는 남아있을 것입니다 : 내 테스트 코드가 될 것이다 들어

:

#include <QtTest/QtTest> 
#include <conio.h> 

class TestQString: public QObject 
{ 
    Q_OBJECT 
private slots: 
    void toUpper(); 

public: 
    ~TestQString() 
    { 
     getch(); 
    } 
}; 

void TestQString::toUpper() 
{ 
    QString str = "Hello"; 
    QCOMPARE(str.toUpper(), QString("HELLO")); 
} 

QTEST_MAIN(TestQString) 
#include "testqstring.moc" 

(1) - How to keep the console window open in Visual C++?

+0

아니, 결과를 볼 수 없습니다. 그러나 "수출"이란 무엇을 의미합니까? – Silicomancer

+0

@Silicomancer 내보내기로 나는 리디렉션에 대해 말한 것을 의미했습니다 (VS 디버거 옵션 "출력 창으로 표준 출력 방향 변경"시도). 하지만 내 편집 내용을 참조하십시오. – Iuliu

+0

현재 VS 2013의 익스프레스 버전을 사용하고 있습니다. 즉, 플러그인을 설치할 수 없습니다 :-( – Silicomancer

관련 문제