如何在多个测试中使用一个变量(gtest)



我想要一个初始化需要更长时间才能在多个测试中使用的对象。它不想初始化,我得到一个错误:

cygwin_exception::open_stackdumpfile:将堆栈跟踪转储到HodnotenieFilmov.exe.stackdump

当我在整个项目中包含不同的文件时,它起了作用,但后来其他东西都坏了。例如,我包含了FilmDatabase.cpp而不是FilmDatabase.h,但现在包含.cpp会导致多个定义错误。

以下是代码片段:

#include <iostream>
#include "gtest/gtest.h"
#include "FilmDatabase.h"
FilmDatabase database("Database.csv");     // <-- the problem
using namespace ::testing;
TEST(Database, GenreDrama) {
vector<Movie> films = database.getMoviesByGenre("DRamA");
ASSERT_EQ(films.size(), 4360);
}
TEST(Database, TagAnime) {
FilmDatabase db(database);
vector<Movie> anime = db.getMoviesByTag("aniME");
ASSERT_EQ(anime.size(), 12);
}

对于一次创建一个对象并在多个测试中使用它,解决方案将是SetUpTestSuite。在同一测试夹具中执行所有测试之前,此函数会被调用一次。

作为一种替代方案,您可以使用mock来伪造需要很长时间才能初始化的对象。

相关内容

  • 没有找到相关文章

最新更新