Я написал DLL с inline
реализациями. Я довольно новичок в модульных тестах в C ++, поэтому я добавил несколько, как описано здесь , и они просто отлично работали. Утверждения реагировали правильно и т. Д. c.
После извлечения методов в их .cpp
по причинам я узнал, что класс должен быть экспортирован (LNK2019, LNK2001). Или, по крайней мере, методы, которые должны быть в состоянии быть проверены. Но экспортные методы ожидают фе. std::string
или контейнеры STL в качестве аргумента, или даже члены другого класса вызывают проблемы с C4251, чего я хотел избежать с # 4 из здесь (TL; DR экспортирует также и все остальное - не работает : C2242).
Возможно игнорировать C4251, но тогда тесты не пройдут с исключением C000005 и следующей трассировкой стека:
Error Message: Exception Code: C0000005 Stack Trace:
at std::allocator<char>::deallocate() in c:\program files (x86)\microsoft visual studio 12.0\vc\include\xmemory0:line 573
at std::_Wrap_alloc<std::allocator<char> >::deallocate() in c:\program files (x86)\microsoft visual studio
12.0\vc\include\xmemory0:line 859
at std::basic_string<char,std::char_traits<char>,std::allocator<char>
::_Tidy() in c:\program files (x86)\microsoft visual studio 12.0\vc\include\xstring:line 2284
at std::basic_string<char,std::char_traits<char>,std::allocator<char>
::~basic_string<char,std::char_traits<char>,std::allocator<char> >() in c:\program files (x86)\microsoft visual studio
12.0\vc\include\xstring:line 992
Но это развивалось уже в тех направлениях, где я никогда не хотел go. Есть ли решение для моей проблемы? Как тестовый проект конфигурации или STH.? Нужно ли менять рамки теста?