【发布时间】:2009-12-21 21:27:43
【问题描述】:
我遇到了 boost 单元测试的问题。基本上,我创建了一个固定装置,它是对资源缓存进行单元测试的套件的一部分。我的主要问题是在测试之间资源缓存变空。因此,测试缓存的第一个测试通过,然后第二个测试将失败,因为第一个测试插入缓存的数据不再存在。为了解决这个问题,我不得不为第二次测试重新插入数据。这是故意的还是我做错了什么?这是代码。最后 2 个测试是问题所在。
#include "UnitTestIncludes.hpp"
#include "ResourceCache.hpp"
#include <SFML/Graphics.hpp>
struct ResourceCacheFixture
{
ResourceCacheFixture()
{
BOOST_TEST_MESSAGE("Setup Fixture...");
key = "graysqr";
imgpath = "../images/graysqr.png";
}
ResourceCache<sf::Image, ImageGenerator> imgCache;
std::string key;
std::string imgpath;
};
// Start of Test Suite
BOOST_FIXTURE_TEST_SUITE(ResourceCacheTestSuite, ResourceCacheFixture)
// Start of tests
BOOST_AUTO_TEST_CASE(ImageGeneratorTest)
{
ImageGenerator imgGen;
BOOST_REQUIRE(imgGen("../images/graysqr.png"));
}
BOOST_AUTO_TEST_CASE(FontGeneratorTest)
{
FontGenerator fntGen;
BOOST_REQUIRE(fntGen("../fonts/arial.ttf"));
}
// This is where the issue is. The data inserted in this test is lost for when I do
// the GetResourceTest. It is fixed here by reinserting the data.
BOOST_AUTO_TEST_CASE(LoadResourceTest)
{
bool result = imgCache.load_resource(key, imgpath);
BOOST_REQUIRE(result);
}
BOOST_AUTO_TEST_CASE(GetResourceTest)
{
imgCache.load_resource(key, imgpath);
BOOST_REQUIRE(imgCache.get_resource(key));
}
// End of Tests
// End of Test Suite
BOOST_AUTO_TEST_SUITE_END()
【问题讨论】:
标签: c++ unit-testing boost