boost::serialization を使用して、1 つのレイヤーから複数のレイヤーに渡す必要があるデータ構造のファミリがあります。例えば
struct DataType1
{
std::string field1;
std::string field2;
template<class Archive>
void serialize(Archive & ar, const unsigned int version)
{
ar & field1;
ar & field2;
}
};
いくつかのフィールドを見逃さないようにするために、これについて単体テストを書きたいと思います(多くの構造とフィールドがあります)。
問題は、構造体に新しいフィールドを追加し (私は間違いなくそうします)、単体テストを更新するのを忘れた場合、このフィールドは単体テストでカバーされないことです。
私の質問は、その構造 (またはクラス) が変更されたことを検出する方法です。私の考えは static_assert(sizeof(DataType1) == HARD_CODED_VALUE) を使用することでしたが、異なるコンパイラ、プラットフォーム (x64、x86)、および構成 (リリース、デバッグ) での構造サイズの違いに悩まされています。
これを処理する方法はありますか?