我的设置是带有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运行测试但是如何将命令行参数传递给测试?它没有接管调试命令参数。
答案 0 :(得分:0)
我为C ++单元测试所做的是通过添加在链接后运行的自定义构建步骤来使它们作为构建的一部分运行。自定义生成步骤运行测试。因此,成功构建意味着编译和链接的代码以及测试通过。这可以确保您的测试始终在运行(如果没有运行和传递测试,则无法成功构建)。我在Test-Driven Development上的5部分博客文章中描述了如何在Visual Studio中进行设置。
我查看了该VS扩展的文档,目前还不清楚它是否支持将任何命令行参数传递给测试可执行文件。但是,使用自定义构建步骤实现这一点非常简单。您可以考虑使用Visual Studio Gallery页面的Q& A部分来查看它是否支持传递命令行参数。
答案 1 :(得分:0)
另一种解决方法是在环境变量中设置参数,并使用getenv()(至少其跨平台)对其进行调用。
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();
}