Перейти к содержимому

Dunit unit testing framework что это

  • автор:

DUnit

DUnit — инструмент для среды разработки Delphi, позволяющий производить автоматическое тестирование модулей. DUnit позволяет Delphi (Object Pascal) разработчикам использовать разработку через тестирование.

Первоначально DUnit был написан Juanco Anez и разрабатывался на основе JUnit в свою очередь написанный Kent Beck и Erich Gamma. Несколько разработчиков теперь ведут DUnit как проект на SourceForge.net.

DUnit стал стандартной частью в среде разработки Delphi 2005. Основная функциональность тестов находится в двух файлах: TestFramework.pas и GUITestRunner.pas.

Для Более ранних версий Delphi существует плагин, аналогичный тому, что включен в Delphi 2005.

Ссылки

  • Проект DUnit на сайте SourceForge.net
  • Войнов НиколайАвтоматизация тестирования для Delphi (2002 год). Архивировано из первоисточника 27 февраля 2012.Проверено 8 сентября 2010.
  • Craig MurphyTest-Driven Development: A Practical Guide book review (англ.) . Архивировано из первоисточника 27 февраля 2012.Проверено 8 сентября 2010.
  • Kris Golko To Err is Human: Automated Testing of Delphi code with DUnit (англ.) // UK-BUG magazine. — 2002. — В. Nov/Dec 2002.
  • Rob Bracken Testing: Quality Time with DUnit (англ.) // The Delphi Magazine. — 2001. — В. 76.
  • Программное обеспечение по алфавиту
  • Экстремальное программирование
  • Модульное тестирование
  • Delphi

Wikimedia Foundation . 2010 .

Dunit unit testing framework что это

Привет всем ! есть модуль TAudio, разработанный каким — то Американским программистом еще в 1999 году.Он предназначен для проигрывания, редактирования, записи файлов *.Wav С его установкой на палитру компонентов проблем не возникло. Мне понадобилось узнать, по какому алгоритму он воспроизводит эти файлы, чтобы потом создать блок данных амплитуд звукового сигнала в текстовом файле.

Так вот. В Пакете Borland Developer Studio 2006 Есть функция создания тестовой программы таких частей «Unit Test». компилятор сам по себе , естественно, в этом модуле ошибок не находит.

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

Я пытался сделать это следующим образом : вот ниже вкладка «Unit Test» я внес в нее строку » TPlayer.PlayFile(‘c:\Track06.wav’,1 ) ;»(см. ниже), однако компилятор мне выдал следующее сообщение об ошибке : «[Pascal Error] UnitTest4.dpr(31): E2076 This form of method call only allowed for class methods» :
program UnitTest4;
Помогите, пожалуйста, решить эту проблему, а то я в основном работаю в C++ Builder и с Delphi сталкиваюсь крайне редко.

Вот- то , что прописано во вкладке «Unit Test»

Delphi DUnit Test Project
————————-
This project contains the DUnit test framework and the GUI/Console test runners.
Add «CONSOLE_TESTRUNNER» to the conditional defines entry in the project options
to use the console test runner. Otherwise the GUI test runner will be used by
default.

uses
Forms,
TestFramework,
GUITestRunner,
TextTestRunner,
Unit1 in ‘Unit1.pas’;

begin
Application.Initialize;
if IsConsole then
begin
TPlayer.PlayFile(‘c:\Track06.wav’,1 ) ;
TextTestRunner.RunRegisteredTests ;
end else
begin
GUITestRunner.RunRegisteredTests ;
end;

А вот — сама функция, к которой мне нужно обратиться.

function TPlayer.PlayFile(FileName:string; NoOfRepeats:Word):boolean;
var temp:array[0..255] of byte;
i : integer;
Data:word;
DataSize:longint;
begin
Result:=false;
if FileName<>» then begin
if (PlayStream=nil) then begin
FOldChannels:=FChannels;
FOldSPS:=FSPS;
FOldBPS:=FBPS;
end;
PlayFileStream:=TFileStream.Create( FileName,fmOpenRead);
PlayFileStream.Read(temp,22);
PlayFileStream.Read(temp,2);
if (temp[0]=2) then begin
if (FChannels<>Stereo) then begin
while FPlayFile do Application.ProcessMessages;
SetChannels(Stereo);
end;
end else begin
if (FChannels<>Mono) then begin
while FPlayFile do Application.ProcessMessages;
SetChannels(Mono);
end;
end;
PlayFileStream.Read(temp,2);
Data:=temp[1]*256+temp[0];
if (FSPS<>Data) then begin
while FPlayFile do Application.ProcessMessages;
SetSPS(Data);
end;
PlayFileStream.Read(temp,8);
PlayFileStream.Read(temp,2);
if (temp[0]>8) then begin
if (FBPS<>_16) then begin
while FPlayFile do Application.ProcessMessages;
SetBPS(_16);
end;
end else begin
if (FBPS<>_8) then begin
while FPlayFile do Application.ProcessMessages;
SetBPS(_8);
end;
end;
PlayFileStream.Read(temp,4); i:=0;
while ((temp[i]<>$64) or (temp[i+1]<>$61) or (temp[i+2]<>$74) or (temp[i+3]<>$61)) do begin
PlayFileStream.Read(temp[i+4],1);
inc(i);
end;
PlayFileStream.Read(DataSize,4);
FPlayFile:=true;
if PlayStream=nil then begin
if Open then begin
< PlayStream:=TMemoryStream.Create; >
PlayStream:=TFileStream.Create(‘PLA Y.TMP’,fmCreate);
FNoOfRepeats:=NoOfRepeats;
ReadPlayStreamPos:=0;
end else begin
PlayFileStream.Free;
exit;
end;
end else begin
PlayStream.Position:=PlayStream.Siz e;
end;
PlayStream.CopyFrom(PlayFileStream, DataSize);
if ReadPlayStreamPos=0 then
for i:=1 to (No_Buffers-ActiveBuffers) do
AddNextOutBuffer;
PlayFileStream.Free;
Result:=true;
end;
end;

P.S. Естественно, весь Unit «ТAudio» я выложить не могу, потому что он занимает больше 2000 строк, да и смысла я в этом не вижу абсолютно.

P.P.S. Очень буду признателен за помощь.

Алексей_DrakonoFF
Посмотреть профиль
Найти ещё сообщения от Алексей_DrakonoFF

Live Scripts

Artem Areshko. Personal blog around Java, Software engineering, Spring, .

Поиск по этому блогу

Модульное тестирование для LotusScript, статья на Хабре и прочее

Ох, давно не брал я в руки шашку! По крайней мере в блоге. Пора немного наверстать упущенное.

Модульное тестирование, DUnit

Несколько раз мне приходила в голову мысль, что было бы не плохо иметь покрытие модульными (unit) тестами систем под IBM Notes/Domino, написанных на LotusScript. Код некоторых становится достаточно сложным, а количество вариантов прохождения неподъемным для прогона после каждого изменения. Т.к. готового инструмента вообще говоря нет, пришлось его создать самому.

Так появился DUnit. Это фреймворк для написания и выполнения unit тестов для кода на языке LotusScript. Сам он тоже написан на нем же. Фреймворк свободный, с открытым кодом. Доступен на GitHub. Там же подробная документация о том, как писать и запускать тесты. Проект был так же размещен на OpenNTF.org

Статья на Хабре

Написание DUnit стало для меня некоторым вызовом. Нет, не в плане кода, а в плане подхода к реализации. Я изначально планировал реализовать как отдельный самостоятельный продукт для свободного размещения. Мне хотелось, чтобы это был не просто выброс кода, а полноценный и, по возможности, удобный инструмент. Хотелось осветить причины его появления, устройство и нюансы разработки.

Где наибольшая аудитория для размещения информации такого рода? Конечно же Хабрахабр! Так появилась моя первая статья на этом ресурсе: Модульное тестирование для приложений на платформе IBM Notes/Domino. Крайне рад, что она была одобрена модераторами и получила право быть размещенной в открытом доступе, а я право на дальнейшие публикации на этом ресурсе.

Ждать одобрения пришлось долго. Я даже несколько пал духом и перестал следить за тем, разместили ли статью или нет. Узнал я совершенно случайно из Facebook:)

Немного о планах.

Параллельно с созданием DUnit работал над еще одним проектом, который должен стать открытым — это движок для написания классических (под клиент) приложений для платформы Notes/Domino. Текущее рабочее название LS Open Domino Framework.

Думаю, что скоро будет первый небольшой релиз с достаточно простой функциональностью. Это маленький шажок по сравнению с тем, что хочется сделать. Планирую посветить эту проекту отдельные посты в блоге, там и расскажу несколько подробнее о планах, идеях и, конечно же, об уже реализованном и выпущенном коде.

LS Open Domino Framework — проект открытый, я посчитал, что он должен быть максимально покрыт модульными тестами. В нем нашел свое применение DUnit. И знаете что? Я крайне доволен проделанной работой. Не могу сказать, что всецело следую принципу TDD и скорее пишу тесты как проверку, что все работает как надо в штатном, граничных и ошибочных случаях. Написание тестов позволило значительно улучшить качество кода и найти некоторые ошибки. Было бы очень обидно, если бы они проникли в релизный код.

Также планирую еще одну статью на хабре. Не буду раскрывать все карты, скажу только, что на этот раз она будет посвящена Java и применению одной интересной библиотеки на практике. Упор всей статьи будет именно практическая сторону применения.

Поделиться

  • Получить ссылку
  • Facebook
  • Twitter
  • Pinterest
  • Электронная почта
  • Другие приложения

Dunit unit testing framework что это

Здравствуйте, Аноним, Вы писали:

А>Расскажи про Люксофт, и желательно с картинками ( вот наши рабочие места, столовка, команда )
А>по моим представлением это такая унылая контора, где на собеседованиях куча формальных тестов, строгие регламенты, не креативное начальство а такие малчики-пинальчики которые каждые «5 минут» спрашивают как дела, скоро ли , когда и к ним в довесок кучка говноменеджеров, которые выискивают заказы и цепляются за них как за последний шанс, все в суете и аврале. Контора сама ничего не креативит а шарится по другим конторам и ищет подножный корм.

У меня есть встречное предложение. А раскажи-ка ты о себе, как зовут, чем занимаешься. Можно с фотками, тебя самого, семьи, можно с домашними любимцами. По моим представлениям анонимы в интернетах бывают весьма унылыми социопатами, и говнокодерами, которые любят задавать неадекватные вопросы и шариться по разным форумам в поисках вброса на вентилятор. В прочем бывают и весьма адекватными ребятам, которым я вполне готов рассказать о себе и поделиться своим мнением, но лишь после того, как смогу убедиться в их адекватности.

Re: UnitTestы внедрение с нуля какую систему выбрать ?

От: SergeyT. http://sergeyteplyakov.blogspot.com/
Дата: 12.10.13 16:09
Оценка: +1

Здравствуйте, Аноним, Вы писали:

А>выбор стоит между встроенной в VisualStudio2013 cистемой и NUnit, но VS2013 фичи доступны только в Ultimate версии за что нужно дополнительно платить. Заплатить конечно не вопрос, но это возможно сделать только если обосновать необходимость, пока не понятно чем система VS2013 будет лучше бесплатного NUnit ?

Здается мне, здесь происходит тоже недопонимание, что и неделй ранее в ветке Какие есть фрейворки для unit-testов на .net ( кроме DUnit )

Автор:
Дата: 27.09.13

, а именно, вы путаете unit testing frameworks (типа MSTest, NUnit, xUnit, MbUnit etc) и isolation frameworks (типа Microsoft Fakes, Moq, Rhyno Mocks etc).

Так, MS Test-ы доступны даже в бесплатной Express версии студии и предназначены для написания и запуска самих юнит-тестов (так что для них не нужна Ultimate версия).

С другой же стороны, есть изоляционные фреймворки, и один из них — это Microsoft Fakes, который доступен только с более дорогих версий студии (но, кажется, с Premium, а не Ultimate).

При этом для юнит-тестов лишь фреймворк для тестов является абсолютно необходимым, а изоляционный фреймворк — это скорее nice to have feature для автоматизации создания подделок (моков, стабов и т.д.)

Автор: SergeyT.
Дата: 02.10.13

, я бы выберал NUnit из-за параметризованных тестов, тем более, что начиная с 12-й студии, NUnit легко интегрируется в студию без каких-либо сторонних инструментов (типа Решарпера), сейчас достаточно скачать бесплатное расширение NUnit Test Adapter и использовать встроенный Test Explorer.

Я бы дал такой общий совет: инструмент в данном случае вторичен. При отсутствии опыта работы с юнит-тестами любой инструмент вначале будет использоваться кривоватенько, не зависимо от того, будет это NUnit, MSTest или что-то еще. Юнит-тесты каждутся сверх простым инструментом, но на деле, это не совсем так. Я бы посоветовал почитать книгу The Art of Unit Testing Роя Ошерова, ну и можно глянуть на мой список постов по юнит-тестам.

Re[2]: UnitTestы внедрение с нуля какую систему выбрать ?

От: Аноним
Дата: 12.10.13 17:26
Оценка:

Здравствуйте, SergeyT., Вы писали:

ST> ну и можно глянуть на мой список постов по юнит-тестам.

Глянул, вопрос — а зачем ты в Люксофте работаешь ?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *