Модульное тестирование с использованием структур данных - PullRequest
2 голосов
/ 16 сентября 2010

Я хочу провести несколько юнит-тестов и несколько функциональных тестов на работающей системе. Тем не менее, у меня есть структура данных, которая в основном состоит из нескольких массивов в объекте (ну, это фортран, поэтому не реальный объект, но вы поняли.) Как будет выглядеть пример для модульного тестирования структуры данных? все примеры, которые я видел до сих пор, возвращали одно значение, которое затем проверялось. Как я могу сделать это с структурой данных, которая состоит из массивов?

Если бы я мог получить пример в funit, это было бы здорово. Вот пример моей структуры данных:

type :: myownobject
     integer :: front(300) 
     integer :: end(300)
     integer :: size
end type

   subroutine getmesugar(myob, moredata)
      type(myownobject), intent(inout) :: myob 
      integer, intent(in) :: moredata (20)
         ! do something with myownobject 
         ! perhaps add the data after a sanity check
         ! using the new data and the object

   end subroutine

Я знаю, что это, возможно, простой вопрос, но я только начинаю с модульного тестирования. Я читаю Роя Ошерова «Искусство модульного тестирования».

1 Ответ

1 голос
/ 16 сентября 2010

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

То, как вы формулируете свой вопрос, также предполагает, что вы, возможно, еще не научились писать функции, которые возвращают массивы, или я неверно истолковываю то, что вы пишете? Вы также можете написать функции, которые возвращают производные типы данных.

Возможно, вы могли бы быть более точным в том, что вы хотите делать с вашим типом, и это может указывать на то, какие юнит-тесты вам нужно написать.

РЕДАКТИРОВАТЬ: отвечать на комментарии ОП чуть длиннее, чем позволяет комментарий.

Долгосрочные программисты на Фортране, такие как я, на самом деле не знают, что такое модульное тестирование. Я остаюсь убежденным, что любой из опубликованных фреймворков, таких как fUnit, будет иметь долговечность и переносимость чисто фортрановского подхода. Каковы шансы, что я все еще буду программировать на Фортране через 10 лет - довольно высока. Каковы шансы, что я буду использовать машину с установкой Ruby через 10 лет - довольно мало. Так что моя мотивация к изучению ФУНИТа низкая.

Да, я пишу модульные тесты на Фортране. Что касается тестирования производных типов данных: я не понимаю, почему у вас проблемы с этим. Как вы юнит тест? Сначала вы записываете набор входных данных, и какие выходы вы ожидаете, что ваша подпрограмма даст, если дать эти входы Затем вы выполняете тесты и сравниваете то, что получаете, с тем, что ожидали получить. Это так просто. А размер и сложность ваших производных типов данных не меняет простоту задачи модульного тестирования, хотя может сделать ее более трудоемкой без поддержки инструментов.

Если вы тестируете большие структуры данных и вам нужно читать и записывать большие объемы данных, такой инструмент, как Matlab, становится очень полезным - вы можете очень легко генерировать наборы входных данных и сравнивать фактические и ожидаемые результаты как численно, так и графически.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...