如何在vscode中运行所有C ++测试用例

时间:2019-12-02 12:16:15

标签: visual-studio-code

我正在寻找VSCode扩展,它可以一键运行我在项目中进行的所有测试。请参阅下面的示例,以了解我的意思。

Example

假设我有几个文件,我想从以下文件运行测试:

  

例如:
  1.Test_input_1.txt
  2.Test_output_1.txt(正确的输出为Test_input_1.txt)
  3.Test_input_2.txt
  4.Test_input_3.txt(Test_input_1.txt的正确输出)

单击运行按钮后,我要对照所有给定的输入和输出检查程序。

欢迎任何建议!

1 个答案:

答案 0 :(得分:0)

好像您已经混淆了两种不同的东西。 Quoted example是指使用某些库(例如CTest,Google Test,Boost.Test)编写实际测试的情况。使用该工具,您必须编写用于测试生产代码的单独代码(您可以阅读有关TDD-测试驱动的开发)。

您已经包括了文本文件列表,这些文件可以馈送到标准输入,用于在以下站点上进行测试用例:SPOJ,Hackerrank等。在此站点上可以使用不同的编程语言。为了验证所提供解决方案的正确性,使用了标准输入和输出。这是一种验证几乎所有语言创建的程序的正确性的快速简便方法,但是该解决方案在现实生活中的软件开发中并不十分有用。

AFAIK没有工具可以帮助您快速完成。

通过重构代码,您可以利用其中一种工具,同时使用这些文件。

int problemSolver(std::istream& in, std::ostream& out)
{
}

#ifndef TESTING_MODE
int main()
{
    return problemSolver(std::cin, std::cout);
}
#else

TEST(ProblemSolverTest, input1)
{
    std::istringstream in{ load_file("Test_input_1.txt") };
    std::ostringstream out;

    ASSERT_EQ(problemSolver(in, out), 0);

    auto result = out.str();
    ASSERT_EQ(result, load_file("Test_output_1.txt"));
}

...

#endif // TESTING_MODE