【问题标题】:googletest read write same file failsgoogletest 读写相同文件失败
【发布时间】:2018-06-08 02:00:27
【问题描述】:

我有一些测试用例,它们都会将一些字符串写入“tmp.txt”并读回。并且测试将失败。如果我一次只测试一个测试用例,或者将临时文件名从“tmp.txt”更改为一些随机生成的文件名,测试将通过。可能的原因是什么? googletest 的测试用例是按顺序运行的吗?

TEST(xxxx) {
  string s = generate_some_string();
  string filename = "tmp.txt";
  ofstream tmpFile(filename);
  tmpFile << s;
  tmpFile.close();
  cv::VideoCapture cap(filename);
  // read the content back using cap, and do some check
  remove(filename.c_str());
}

【问题讨论】:

    标签: c++ opencv googletest


    【解决方案1】:

    默认情况下 googletest 应该按顺序运行测试;虽然有一个 special testrunner 可以并行运行测试,并且 Visual Studio 的测试插件也可以配置为并行运行测试。

    我的怀疑更倾向于cv::VideoCapture cap(filename); 调用 - 您能否在调用返回时验证文件确实已关闭,或者最迟在您调用 remove(filename.c_str()); 时是否已关闭?

    【讨论】:

    • 谢谢,我终于发现问题不是因为gtest。其他一些控制器使测试并行。
    • 没问题,很抱歉无法(直接)提供帮助。如果您认为根本原因(即其他地方的控制器)不是那么常见的设置,请将解决方案作为您自己的答案发布并接受,以防其他人遇到同样的问题。 (如果问题是特定于您的设置并且不太可能发生在其他任何人身上,那么发布它的用处就会减少 - 即“当使用带有工具 X 和我们特殊的内部测试工具和运行器 Y 的 gtest 时......”不太可能发生在您的公司之外)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-24
    相关资源
    最近更新 更多