有点学术问题,但我在编写一些单元测试时遇到了这个问题。
我的单元测试框架 (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 中),当您使用相同的名称命名夹具结构时(因此现在存在同名的结构的两个版本),然后其中一个版本会被默默地抛出。这非常令人惊讶,因为我将编译器设置为 /W4(最高警告级别)并且没有出现警告。我想这是名称冲突,为什么要发明命名空间,但我真的需要将每个单元测试装置包装在单独的命名空间中吗?我只是想确保我没有遗漏一些更基本的东西。
有没有更好的方法来解决这个问题 - 这应该发生吗?我不应该看到重复符号错误或其他什么吗?