单元测试,Boost序列化

时间:2015-08-06 11:55:17

标签: c++ unit-testing boost

我正在尝试创建包含boost序列化和反序列化的单元测试。

我遇到了有关此内容中版本价值的一些问题:

class Object
{
public:
    template<class Archive>
    void serialize(Archive& ar, const unsigned int version)
    {
        ar & BOOST_SERIALIZATION_NVP(m_value1);

        if (version >= 2)
        {
          ar & BOOST_SERIALIZATION_NVP(m_value2);
        }
};
BOOST_CLASS_VERSION(Object, 2)

单元测试中的代码:

#include <boost/archive/binary_oarchive.hpp>
#include <boost/archive/binary_iarchive.hpp>
#include <boost/archive/xml_oarchive.hpp>
#include <boost/archive/xml_iarchive.hpp>
#include <boost/serialization/export.hpp>
#include <boost/serialization/version.hpp>
    SUITE(ObjectTest)
    {
         TEST_FIXTURE(ObjectTestFixture, testSerialize)
         {
        std::stringstream serialisationStream;
        boost::archive::xml_oarchive outputArchive(serialisationStream);
        outputArchive << boost::serialization::make_nvp("Object",object);
        boost::archive::xml_iarchive inputArchive(serialisationStream);
        Object deserialized;
        inputArchive >> boost::serialization::make_nvp("Object", deserialized); 

当我进行调试时,我注意到版本号始终是&#39; 0&#39;。在这个内容中。

在正常执行期间(当对象序列化为文件然后读取时)版本值是正确的。

所以,当我检查价值&#39; m_value2&#39;在单元测试内容中,对象和反序列化对象之间的值永远不会相等,因为&#39; m_value2&#39;部分总是被跳过。

我不知道版本号何时以及如何添加到流中,我在单元测试期间使用与正常执行中相同的方法。

Name : outputArchive2
    Details:{<boost::archive::xml_oarchive_impl<boost::archive::xml_oarchive>> = {<boost::archive::basic_text_oprimitive<std::basic_ostream<char, std::char_traits<char> > >> = {os = @0xbfffc988, flags_saver = {s_save_ = @0xbfffc9b4, a_save_ = 4098}, precision_saver = {s_save_ = @0xbfffc9b4, a_save_ = 6}, archive_locale = {px = 0x90331e0}, locale_saver = {<boost::noncopyable_::noncopyable> = {<No data fields>}, s_save_ = @0xbfffc98c, a_save_ = {static none = 0, static ctype = 1, static numeric = 2, static collate = 4, static time = 8, static monetary = 16, static messages = 32, static all = 63, _M_impl = 0xb70ed1b4, static _S_classic = <optimized out>, static _S_global = <optimized out>, static _S_categories = <optimized out>, static _S_once = <optimized out>}}}, <boost::archive::basic_xml_oarchive<boost::archive::xml_oarchive>> = {<boost::archive::detail::common_oarchive<boost::archive::xml_oarchive>> = {<boost::archive::detail::basic_oarchive> = {<No data fields>}, <boost::archive::detail::interface_oarchive<boost::archive::xml_oarchive>> = {<No data fields>}, <No data fields>}, depth = 0, indent_next = true, pending_preamble = false}, <No data fields>}, <No data fields>}
    Default:{...}
    Decimal:{...}
    Hex:{...}
    Binary:{...}
    Octal:{...}

0 个答案:

没有答案
相关问题