Проблема оказалась связана с другими виртуальными функциями внутри исходных классов, которые были в моем коде. Код выше работает без проблем. Во время разработки я столкнулся с другими проблемами, поэтому я отправил ей новый код, который решает все эти проблемы с комментариями, упомянутыми рядом с ними:
// Top Level (Level 1)
class Abstract_Class_A
{
~Abstract_Class_A (); // To solve source type is not polymorphic” when trying to use dynamic_cast
};
class Abstract_Class_B: virtual public Abstract_Class_A
{
public:
uint8_t type;
};
class Abstract_Class_C: virtual public Abstract_Class_A
{
};
// Second Level (Level 2)
class Impl_Class_A : virtual public Abstract_Class_A
{
public:
double angle;
};
class Impl_Class_B: virtual public Abstract_Class_B, virtual public Impl_Class_A // Missing second virtual
{
};
class Impl_Class_C: virtual public Abstract_Class_C, virtual public Impl_Class_A // Missing second virtual
{
};
void test()
{
Impl_Class_B* test = new Impl_Class_B ();
}
Примечания:
[118 ]
static_cast
, вместо этого следует использовать dynamic_cast
. Проверьте следующее обсуждение . dynamic_cast
вы должны добавить виртуальный деструктор в верхний класс. Проверьте следующее обсуждение об этом. Попробуйте Простой ( Знаток ) его очень легкое для встраивания в модульный тест. Возьмите RoundTripTest и примеры такой как PostTest, записанный с Простым. Обеспечивает пример того, как встроить сервер в Ваш тестовый сценарий.
Также Простой намного легче и быстрее, чем Причал, без зависимостей. Таким образом, Вы не должны будете добавлять несколько файлов банки на свой путь к классу. И при этом Вы не должны будете быть обеспокоены в WEB-INF/web.xml
или никакие другие артефакты.
Вы пытаетесь использовать , насмешка или встроила веб-сервер?
Для насмешка веб-сервер, попытайтесь использовать Mockito или что-то подобное, и просто дразните HttpServletRequest
и HttpServletResponse
объекты как:
MyServlet servlet = new MyServlet();
HttpServletRequest mockRequest = mock(HttpServletRequest.class);
HttpServletResponse mockResponse = mock(HttpServletResponse.class);
StringWriter out = new StringWriter();
PrintWriter printOut = new PrintWriter(out);
when(mockResponse.getWriter()).thenReturn(printOut);
servlet.doGet(mockRequest, mockResponse);
verify(mockResponse).setStatus(200);
assertEquals("my content", out.toString());
Для встроил веб-сервер, Вы могли использовать Причал , который Вы можете использование в тестах .
Попытайтесь использовать Гагатовый веб-сервер .