Как мне организовать тестовые случаи в моем проекте? - PullRequest
0 голосов
/ 14 сентября 2009

У меня есть проект, который выглядит так:

xdc/
  hubactions/
    hubconnection.cpp
    hubconnection.h
  uiinterface/
    readme
    uiconnection.cpp
    uiconnection.h
    ...
  uiactions/
    readme
    connectaction.cpp
    connectaction.h
    quitaction.cpp
    quitaction.h
    ...
  utils/
    parser.cpp
    parser.h
    ...

Теперь я хочу начать тестирование до того, как проект станет слишком большим.

Итак, как мне организовать организацию моих тестов? У меня есть два варианта:

Вариант 1

xdc/
  hubactions/
    hubconnection.cpp
    hubconnection.h
  uiinterface/
    readme
    uiconnection.cpp
    uiconnection.h
    ...
  uiactions/
    readme
    connectaction.cpp
    connectaction.h
    quitaction.cpp
    quitaction.h
    ...
  utils/
    parser.cpp
    parser.h
    ...
  tests/
    utils/
      parsertest.cpp
    uiinterface/
      uiconnectiontest.cpp
    uiactions/
      connectactiontest.cpp
      quitactiontest.cpp
    hubactions/
      fakehubconnection.cpp
      fakehubconnection.h
    ...

Вариант 2

xdc/
  hubactions/
    tests/
      fakehubconnection.cpp
      fakehubconnection.h
    hubconnection.cpp
    hubconnection.h
  uiinterface/
    tests/
      uiconnectiontest.cpp
    readme
    uiconnection.cpp
    uiconnection.h
    ...
  uiactions/
    tests/
      connectactiontest.cpp
      quitactiontest.cpp
    readme
    connectaction.cpp
    connectaction.h
    quitaction.cpp
    quitaction.h
    ...
  utils/
    tests/
      parsertest.cpp
    parser.cpp
    parser.h
    ...

Какой метод лучше? Могу ли я сделать это по-другому / лучше?

Спасибо!

Ответы [ 3 ]

1 голос
/ 14 сентября 2009

Аргументом для варианта 1 является то, что это делает более четкое разделение между рабочим кодом и тестовым кодом. В результате менее вероятно, что тестовый код станет частью производственного кода.

1 голос
/ 14 сентября 2009

Мне нравится структура кода, за которой следуют Apache Software Foundation (ASF) и его основной инструмент сборки, Maven . Эта структура ориентирована на Java, но может применяться к другим языкам. лучший плагин C ++ для Maven , на мой взгляд, следует структуре ASF для C ++ и выглядит следующим образом:

project/
  /src
    /main
      /include
      /c++
    /test
      /include
      /c++

Я использую эту структуру, и она хорошо работает и согласуется с моими проектами, написанными на других языках.

1 голос
/ 14 сентября 2009

Я не думаю, что есть «лучший» вариант.

Лично я предпочитаю вариант 2, так как он держит тесты физически близкими к тестируемому коду.

Тем не менее, я уверен, что кто-то придет с совершенно веской причиной, чтобы использовать вариант 1.

Третий вариант (который мне действительно не нравится) может заключаться в том, чтобы хранить тесты с тестируемым кодом (см. Ниже). Однако это имеет тенденцию слишком загромождать структуру каталогов

xdc/
  hubactions/
    fakehubconnection.cpp
    fakehubconnection.h
    hubconnection.cpp
    hubconnection.h
  uiinterface/
    uiconnectiontest.cpp
    readme
    uiconnection.cpp
    uiconnection.h
    ...
  uiactions/
    connectactiontest.cpp
    quitactiontest.cpp
    readme
    connectaction.cpp
    connectaction.h
    quitaction.cpp
    quitaction.h
    ...
  utils/
    parsertest.cpp
    parser.cpp
    parser.h
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...