やや学術的な質問ですが、単体テストを書いているときにこれに遭遇しました。
私の単体テスト フレームワーク (UnitTest++) では、フィクスチャとして機能する構造体を作成できます。通常、これらはファイル内のテストに合わせてカスタマイズされるため、単体テスト ファイルの先頭に配置します。
//Tests1.cpp
struct MyFixture { MyFixture() { ... do some setup things ...} };
TEST_FIXTURE(MyFixture, SomeTest)
{
...
}
//Tests2.cpp
struct MyFixture { MyFixture() { ... do some other setup things, different from Tests1}};
TEST_FIXTURE(MyFixture, SomeOtherTest)
{
...
}
ただし、最近 (少なくとも VS2005 では) 同じ名前を使用してフィクスチャ構造体に名前を付けると (したがって、構造体の 2 つのバージョンが同じ名前で存在するようになりました)、バージョンの 1 つが静かにスローされることがわかりました。コンパイラを /W4 (最高の警告レベル) に設定していて、警告が表示されないため、これはかなり驚くべきことです。これは名前の衝突であり、名前空間が発明された理由だと思いますが、それぞれの単体テスト フィクスチャを個別の名前空間にラップする必要があるのでしょうか? もっと基本的なものを見逃していないことを確認したいだけです。
これを修正するより良い方法はありますか? シンボルの重複エラーか何かが表示されるべきではありませんか?