Как объяснить Visual Studio, что юнит тесты с одинаковым именем, это разные тесты?
Рассмотрим следующий код:
namespace A
{
TEST(Object, Serialization)
{
Object object;
// ...
}
}
namespace B
{
TEST(Object, Serialization)
{
Object object;
// ...
}
}
Сборка двух таких тестов проходит корректно, потому что тесты имеют разные имена в связи с принадлежностью к разным пространствам имен. Однако, после сборки Visual Studio видит только тест из пространства имен B.
Это ненормальная ситуация. В крупном проекте может быть много типов с именем Object, которые находятся в разных пространствах имен. Что же, теперь при тестировании типов с одинаковым именем в рамках одного проекта для тестов нужно выдумывать дополнительные способы ручного декорирования имен тестов?
Существует ли способ решить эту проблему через задание специальной настройки при сборке в cmake?
Ответы (1 шт):
Макрос TEST принимает на вход два аргумента, задающие идентификатор теста, который затем будет использован при его авторегистрации:
- имя тестового набора - должно быть глобально уникальным для разных наборов
- имя теста - должно быть уникальным в пределах одного тестового набора
В приведенном коде два теста будут иметь совпадающие идентификаторы.