Как объяснить Visual Studio, что юнит тесты с одинаковым именем, это разные тесты?

Рассмотрим следующий код:

namespace A
{
    TEST(Object, Serialization)
    {
        Object object;
        // ...
    }
}

namespace B
{
    TEST(Object, Serialization)
    {
        Object object;
        // ...
    }
}

Сборка двух таких тестов проходит корректно, потому что тесты имеют разные имена в связи с принадлежностью к разным пространствам имен. Однако, после сборки Visual Studio видит только тест из пространства имен B.

Это ненормальная ситуация. В крупном проекте может быть много типов с именем Object, которые находятся в разных пространствах имен. Что же, теперь при тестировании типов с одинаковым именем в рамках одного проекта для тестов нужно выдумывать дополнительные способы ручного декорирования имен тестов?

Существует ли способ решить эту проблему через задание специальной настройки при сборке в cmake?


Ответы (1 шт):

Автор решения: user7860670

Макрос TEST принимает на вход два аргумента, задающие идентификатор теста, который затем будет использован при его авторегистрации:

  1. имя тестового набора - должно быть глобально уникальным для разных наборов
  2. имя теста - должно быть уникальным в пределах одного тестового набора

В приведенном коде два теста будут иметь совпадающие идентификаторы.

→ Ссылка