2010-09-16 8 views
2

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

Если бы я мог получить пример в 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 

я знаю его, возможно, простой вопрос, но я действительно только начиная с модульным тестированием. Я читаю «The Art Of Unit Testing» Роя Ошерове.

ответ

1

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

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

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

EDIT: ответить на комментарий Op по адресу немного больше длины, чем комментарий позволяет ..

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

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

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

+0

Ну, конечно, я хочу, чтобы функции, которые работают над моим производным типом данных, подлежали тестированию на единицу. моя подпрограмма работает над производным типом данных. я изменил вопрос, чтобы отразить это. – tarrasch

+1

ОК, теперь я действительно не понимаю ваш вопрос. «Как я могу использовать Funit для написания и выполнения модульных тестов?» ? По этому вопросу я не могу помочь, я пишу модульные тесты в Fortran. –

+0

ОК, это означает, что у вас есть собственный модуль тестирования модулей? все, что я хочу, - это убедиться, что функция в приведенном выше примере работает так, как должна, - что является целью модульного тестирования, поскольку я это понял. однако данные, которые обрабатываются, на самом деле не могут быть описаны простым типом данных, а также не могут быть решены. Таким образом, чтобы проверить это, я должен посмотреть на тип данных до и после вычисления. Мой вопрос просто, как я могу сделать это лучше всего?надлежащий тестовый жгут, такой как funit, был бы замечательным, но у меня пока нет опыта с ним – tarrasch

Смежные вопросы