为什么在使用 gtest 时不显示 Windows 控制台?

问题描述

所以我使用 gtest 进行单元测试。下面的测试用例只是创建了一个运行 Console.exe 的基本 Windows 进程:

TEST_F(testName,testCase) {
    STARTUPINFO si;
    PROCESS_informatION pi;

    ZeroMemory(&si,sizeof(si));
    si.cb = sizeof(si);
    ZeroMemory(&pi,sizeof(pi));

    // Start the child process. 
    if (!CreateProcess(
        L"C:\\my-space\\my-stuffs\\c++\\openGL\\x64\\Debug\\Console.exe",// No module name (use command line)
        NULL,// Command line
        NULL,// Process handle not inheritable
        NULL,// Thread handle not inheritable
        FALSE,// Set handle inheritance to FALSE
        0,// No creation flags
        NULL,// Use parent's environment block
        NULL,// Use parent's starting directory 
        &si,// Pointer to STARTUPINFO structure
        &pi)            // Pointer to PROCESS_informatION structure
        )
    {
        printf("CreateProcess Failed (%d).\n",GetLastError());
    }

    // Wait until child process exits.
    WaitForSingleObject(pi.hProcess,INFINITE);

    // Close process and thread handles. 
    CloseHandle(pi.hProcess);
    CloseHandle(pi.hThread);

}

Console.exe 只是打印出“hello,world”并等待直到有输入以便控制台可以关闭

int main()
{
    std::cout << "Hello World!\n";

    int i;

    std::cin >> i;
}

因此,当我在另一个文件的主函数中调试测试用例内容时,黑色控制台出现并且一切正常,但是当我将其放入 googletest 中的 TEST_F 时,控制台不会出现。不过,输出是存在的。

有人能告诉我这是如何工作的吗?提前致谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...