Как зайти в Даркнет?!
25th January, 01:11
8
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
898
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
951
0
Очень долго работает Update запрос Oracle
27th January, 09:58
916
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
907
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
941
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1725
0
период по дням
25th October, 10:44
3957
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3722
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4614
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4382
0
Помогите пожалуйста решить задачи
24th November, 23:53
6087
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4352
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4398
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Модульное тестирование в Delphi - как вы это делаете?
Мне интересно, как несколько пользователей Delphi здесь делают модульное тестирование, если таковые имеются? Есть ли что-нибудь, что интегрируется с IDE, что вы нашли хорошо работает? Если нет, то какие инструменты вы используете и есть ли у вас или знаете примеры мини-проектов, которые демонстрируют, как все это работает?
Обновление:
Я забыл упомянуть, что использую BDS 2006 Pro, хотя иногда я заглядываю в Delphi 7, и, конечно, другие могут использовать другие версии.
DUnit - это xUnit тип платформы модульного тестирования, которая будет использоваться с win32 Delphi. Начиная с Delphi 2005 DUnit интегрируется в точку certan в IDE. Другие инструменты интеграции DUnit для Delphi IDE можно найти здесь . DUnit поставляется с документацией с примерами .
Есть некоторые дополнения для DUnit, возможно, это стоит новой записи на SO. Два из них я могу внести в список уже сейчас
- Интеграция FastMM4: модульные тесты автоматически обнаружат утечки памяти (и другие вещи), работает с DUnit 9.3 и новее
- OpenCTF - это ' компонентный тест рамки, основанные на DUnit, это создает тесты динамически для все компоненты в проекте формы, фреймы и датамодули, а также тестирует их с помощью настраиваемых правил (open source)
Вы можете взглянуть на классы модульного тестирования, доступные в нашем блоке с открытым исходным кодом SynCommons . Он используется в нашем фреймворке с открытым исходным кодом для всех регрессионных тестов. Возможно, это не самое лучшее, но стоит взглянуть на него.
Увидеть http://blog.synopse.info/post/2010/07/23/Unit-Testing-light-in-Delphi
Чтобы реализовать модульный тест, просто объявите новый тестовый случай, создав такой класс:
type
TTestNumbersAdding = class(TSynTestCase)
published
procedure TestIntegerAdd;
procedure TestDoubleAdd;
end;
procedure TTestNumbersAdding.TestDoubleAdd;
var A,B: double;
i: integer;
begin
for i := 1 to 1000 do
begin
A := Random;
B := Random;
CheckSame(A+B,Adding(A,B));
end;
end;
Затем вы создаете тестовый костюм и запускаете его.
В версии up-to-come 1.13 также есть новый механизм ведения журнала со стеком trace любого вызванного исключения и таким же, как MadExcept, использующим содержимое файла .map в качестве источника.
Теперь он используется классами модульного тестирования, так что любой сбой создаст запись в журнале с исходной строкой и стеком trace:
C:\Dev\lib\SQLite3\exe\TestSQL3.exe 0.0.0.0 (2011-04-13)
Host=Laptop User=MyName CPU=2*0-15-1027 OS=2.3=5.1.2600 Wow64=0 Freq=3579545
TSynLogTest 1.13 2011-04-13 05:40:25
20110413 05402559 fail TTestLowLevelCommon(00B31D70) Low level common: TDynArray "" stack trace 0002FE0B SynCommons.TDynArray.Init (15148) 00036736 SynCommons.Test64K (18206) 0003682F SynCommons.TTestLowLevelCommon._TDynArray (18214) 000E9C94 TestSQL3 (163)
Разница между тестовым костюмом без регистрации и тестовым костюмом с регистрацией заключается только в этом:
procedure TSynTestsLogged.Failed(const msg: string; aTest: TSynTestCase);
begin
inherited;
with TestCase[fCurrentMethod] do
fLogFile.Log(sllFail,'%: % "%"',
[Ident,TestName[fCurrentMethodIndex],msg],aTest);
end;
Механизм протоколирования может сделать гораздо больше, чем просто регистрировать тестирование: вы можете регистрировать рекурсивные вызовы методов, выбирать информацию, которую вы хотите видеть в журналах, профилировать приложение со стороны клиента, записывать опубликованные свойства, содержимое TList или TCollection как JSON в содержимое журнала и так далее...
При первом чтении файла .map создается файл .mab, который будет содержать всю необходимую информацию о символах. Вы можете отправить файл .mab вместе с файлом .exe своему клиенту или даже встроить его содержимое в файл .exe. Этот файл .mab оптимизирован: .map из 927,984 байт сжимается в файл 71,943 .mab.
Таким образом, эта единица может быть признана естественным ребенком DUnit и MadExcept свадьбы, в чистом OpenSource. :)
Дополнительная информация доступна на нашем форуме . Не стесняйтесь спрашивать. Обратная связь и пожелания по функциям приветствуются! Работает от Delphi 6 до XE.
DUnit2 доступно от http://members.optusnet.com.au/~mcnabp/
DUnit2 модифицируется более регулярно, чем оригинальный dunit. Он также работает на Delphi 2009.
Попробуйте: http://sourceforge.net/projects/dunit2/ - он переехал, так как первоначальный автор Питер McNab скончался несколько лет назад. Все еще какая-то активность в списке рассылки dunit.
В разработке находится новая платформа модульного тестирования для современных версий Delphi: https://github.com/VSoftTechnologies/DUnitX
У нас есть два подхода, во - первых, у нас есть тесты Dunit, которые запускаются разработчиками-они гарантируют, что код, который только что был изменен, все еще работает, как и раньше. Другой подход состоит в том, чтобы использовать CruiseControl.NET для построения исполняемых файлов и затем запускать тесты dunit каждый раз, когда вносится изменение, чтобы гарантировать, что нет никаких непреднамеренных последствий изменения.
Большая часть нашей кодовой базы не имеет тестов, поэтому автоматические тесты являются случаем непрерывной разработки, чтобы гарантировать, что наши приложения работают так, как мы думаем, что они должны работать.