0

我的设置是带有 gtest 测试运行器的 Visual Studio 2015

https://visualstudiogallery.msdn.microsoft.com/94c02701-8043-4851-8458-34f137d10874

一切正常。但现在我想将命令行参数传递给

int main(int argc, char **argv) {..}

调试时,我可以使用 Properties->Debugging->Command Argument 传递它们。这很好用。

我可以使用 Test->Run->Selected Test 运行测试,但是如何将命令行参数传递给测试?它没有接管调试命令参数。

4

2 回答 2

0

我对 C++ 单元测试所做的是通过添加在链接后运行的自定义构建步骤,让它们作为构建的一部分运行。自定义构建步骤运行测试。因此,成功的构建意味着代码已编译和链接,并且测试通过了。这可以确保您的测试始终在运行(如果没有运行和通过测试,您将无法成功构建)。我在关于测试驱动开发的 5 部分博客文章中描述了如何在 Visual Studio 中进行设置。

我查看了该 VS 扩展的文档,不清楚它是否支持将任何命令行参数传递给测试可执行文件。但是,通过自定义构建步骤来实现这一点是微不足道的。您可以考虑使用该扩展的 Visual Studio Gallery 页面的 Q&A 部分来查看它们是否支持传递命令行参数。

于 2015-12-09T22:26:35.673 回答
0

另一种解决方法是在环境变量中设置参数并使用 getenv() 调用 main(至少它的跨平台)

int main(int argc, char * argv[])
{
    if(argc== 1)
    {
        char* path = getenv("your-argument-env-variable");
        // check if path is not null
    }
    else
    {
        // Default reading from command argument
    }

    ::testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();
}
于 2019-08-07T04:27:02.697 回答