{"id":2116,"date":"2020-09-30T15:01:19","date_gmt":"2020-09-30T14:01:19","guid":{"rendered":"https:\/\/gdksoftware.com\/knowledgebase\/behavioral-driven-development-in-delphi"},"modified":"2020-10-20T09:59:13","modified_gmt":"2020-10-20T08:59:13","slug":"behavioral-driven-development-in-delphi","status":"publish","type":"knowledge","link":"https:\/\/gdksoftware.com\/nl\/kennisbank\/behavioral-driven-development-in-delphi","title":{"rendered":"Behavioural driven development"},"content":{"rendered":"<p>Voor het testen van kleine stukjes code zoals functies gebruiken we unit tests. Voor grotere stukken code kun je gebruik maken van Behavioral Driven Development, kortweg BDD. Met behulp van deze aanpak worden tests geschreven in een taal die begrijpelijk is voor zowel ontwikkelaars als andere belanghebbenden.<\/p>\n<p>Er is al veel geschreven over BDD. Zoals <a href=\"https:\/\/en.wikipedia.org\/wiki\/Behavior-driven_development\" target=\"_blank\" rel=\"noopener noreferrer\">BDD<\/a><\/p>\n<p>Als je op het web zoekt naar Delphitools naar BDD krijg je de volgende links:<\/p>\n<ol>\n<li><a href=\"https:\/\/www.slideshare.net\/RomanYankovsky\/behavior-driven-development-in-delphi\" target=\"_blank\" rel=\"noopener noreferrer\">Dit<\/a> (<a href=\"https:\/\/www.youtube.com\/watch?v=_U7DjaeqVHE\" target=\"_blank\" rel=\"noopener noreferrer\">YouTube<\/a> is Roman die deze dia&#8217;s presenteert). Deze links zijn een presentatie van zijn kader DelphiSpec. Heel basic, maar het laat zien hoe het werkt.<\/li>\n<li><a href=\"https:\/\/github.com\/RomanYankovsky\/DelphiSpec\" target=\"_blank\" rel=\"noopener noreferrer\">DelphiSpec<\/a>: Delphi-bibliotheek voor het uitvoeren van geautomatiseerde tests, geschreven in gewone taal<\/li>\n<li><a href=\"https:\/\/sourceforge.net\/projects\/dspec\/\" target=\"_blank\" rel=\"noopener noreferrer\">dSpec<\/a>: dSpec (beta status) is een BDD-raamwerk voor Delphi\/Pascal, gebouwd als uitbreiding van DUnit.<\/li>\n<\/ol>\n<p><strong>DelphiSpec<\/strong><\/p>\n<p>Het uitvoeren van functietests met behulp van dit raamwerk is eenvoudig. Hoewel DelphiSpec niet erg goed gedocumenteerd is, heeft het een aantal demoprojecten die laten zien wat er ondersteund wordt en wat er gedaan kan worden. We hebben een Romeinse cijferomzetter ge\u00efmplementeerd. Het zip-bestand bevat zowel het framework als het demoproject.<\/p>\n<p>Het toevoegen van nieuwe testen is niet moeilijk, maar gebeurt allemaal handmatig. Dat is een tekortkoming van dit kader. Verder is het zo dat het gebruik van dit framework BDD zeker voor Delphi projecten kan worden ge\u00efmplementeerd.<\/p>\n<p><a href=\"https:\/\/gdksoftware.com\/wp-content\/uploads\/2020\/06\/Demo_using_DelphiSpec.7z\">Demo_using_DelphiSpec<\/a><\/p>\n<p><strong>dSpec<\/strong><\/p>\n<p>In het begin zal dspec niet compileren. De reden hiervoor is dat het de constructeur op Self roept vanuit een instance-methode. Dit was een techniek die voor XE3 werd gebruikt, zodat men in een base-class een functie kon schrijven die kon worden aangeroepen op objecten die afgeleid zijn van die base-class om snel objecten van die afgeleide klasse te cre\u00ebren.<\/p>\n<p>Dit kader wordt anders gebruikt. In plaats van gebruik te maken van functiebestanden, wordt alles in code gedaan.<\/p>\n<p>&#8211; Eerst gaat je klasse uit van TContext. Deze dSpec-klasse strekt zich uit van TTestCase (onderdeel van DUnit).<\/p>\n<p>&#8211; Deze TContext heeft een eigenschap genaamd Specify. Dit object heeft een aantal overbelaste functies die een ISpecifier-implementatie teruggeven die een Should-methode heeft.<\/p>\n<p>&#8211; Met behulp van dit raamwerk kun je je uitspraken op deze manier schrijven:<\/p>\n<p>Specify.That(FFloat).Should.Be.GreaterThan(1).And_.Be.LessThan(2);<\/p>\n<p>In dit geval werd de FFloat ingevuld in een setup-methode. Alle andere methoden maken deel uit van het raamwerk.<\/p>\n<p><strong>Romeinse cijferomzetter<\/strong><\/p>\n<p>Het opnemen van het DelphiSpec-raamwerk in het project ondersteunt een beperkte set van de Gherkin-taal. Het bevat hiervoor een eigen parser.<\/p>\n<p><strong>Ondersteuning<\/strong><\/p>\n<p>De ondersteuning hiervoor is omslachtig in Delphi. Het DelphiSpec raamwerk dat in 2015 is geschreven lijkt het beste wat we hebben en het ondersteunt geen ontleding van de functiebestanden naar pas-bestanden voor verdere implementatie. Het is allemaal handwerk. Natuurlijk is het mogelijk om hiervoor een parser te implementeren, maar aangezien het werk aan het DelphiSpec framework lijkt te zijn gestopt, moeten daar ook nieuwe functies worden toegevoegd om volledig up-to-date te zijn.<\/p>\n<p><a href=\"https:\/\/gdksoftware.com\/wp-content\/uploads\/2020\/07\/FeatureParser.7z\">FeatureParser<\/a><\/p>\n","protected":false},"featured_media":0,"parent":0,"template":"","class_list":["post-2116","knowledge","type-knowledge","status-publish","hentry","knowledge-category-delphi","knowledge-category-software-ontwikkeling"],"acf":{"author":1655,"type_hero":"compact","hero_image":1975,"hero_image_position":"","hero_title":"BDD in Delphi","hero_content":"","hero_link":"","hero_show_h1":true},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.8 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Behavioural driven development - GDK Software<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/gdksoftware.com\/nl\/kennisbank\/behavioral-driven-development-in-delphi\" \/>\n<meta property=\"og:locale\" content=\"nl_NL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Behavioural driven development\" \/>\n<meta property=\"og:description\" content=\"Voor het testen van kleine stukjes code zoals functies gebruiken we unit tests. Voor grotere stukken code kun je gebruik maken van Behavioral Driven Development, kortweg BDD. Met behulp van deze aanpak worden tests geschreven in een taal die begrijpelijk is voor zowel ontwikkelaars als andere belanghebbenden. Er is al veel geschreven over BDD. Zoals [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/gdksoftware.com\/nl\/kennisbank\/behavioral-driven-development-in-delphi\" \/>\n<meta property=\"og:site_name\" content=\"GDK Software\" \/>\n<meta property=\"article:modified_time\" content=\"2020-10-20T08:59:13+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Geschatte leestijd\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/nl\\\/kennisbank\\\/behavioral-driven-development-in-delphi\",\"url\":\"https:\\\/\\\/gdksoftware.com\\\/nl\\\/kennisbank\\\/behavioral-driven-development-in-delphi\",\"name\":\"Behavioural driven development - GDK Software\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/nl#website\"},\"datePublished\":\"2020-09-30T14:01:19+00:00\",\"dateModified\":\"2020-10-20T08:59:13+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/nl\\\/kennisbank\\\/behavioral-driven-development-in-delphi#breadcrumb\"},\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/gdksoftware.com\\\/nl\\\/kennisbank\\\/behavioral-driven-development-in-delphi\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/nl\\\/kennisbank\\\/behavioral-driven-development-in-delphi#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/gdksoftware.com\\\/nl\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Knowledgebase\",\"item\":\"https:\\\/\\\/gdksoftware.com\\\/nl\\\/kennisbank\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Delphi\",\"item\":\"https:\\\/\\\/gdksoftware.com\\\/nl\\\/kennisbank-categorie\\\/delphi\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Behavioural driven development\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/nl#website\",\"url\":\"https:\\\/\\\/gdksoftware.com\\\/nl\",\"name\":\"GDK Software\",\"description\":\"Zet de stip op je horizon\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/gdksoftware.com\\\/nl?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"nl-NL\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Behavioural driven development - GDK Software","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/gdksoftware.com\/nl\/kennisbank\/behavioral-driven-development-in-delphi","og_locale":"nl_NL","og_type":"article","og_title":"Behavioural driven development","og_description":"Voor het testen van kleine stukjes code zoals functies gebruiken we unit tests. Voor grotere stukken code kun je gebruik maken van Behavioral Driven Development, kortweg BDD. Met behulp van deze aanpak worden tests geschreven in een taal die begrijpelijk is voor zowel ontwikkelaars als andere belanghebbenden. Er is al veel geschreven over BDD. Zoals [&hellip;]","og_url":"https:\/\/gdksoftware.com\/nl\/kennisbank\/behavioral-driven-development-in-delphi","og_site_name":"GDK Software","article_modified_time":"2020-10-20T08:59:13+00:00","twitter_card":"summary_large_image","twitter_misc":{"Geschatte leestijd":"2 minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/gdksoftware.com\/nl\/kennisbank\/behavioral-driven-development-in-delphi","url":"https:\/\/gdksoftware.com\/nl\/kennisbank\/behavioral-driven-development-in-delphi","name":"Behavioural driven development - GDK Software","isPartOf":{"@id":"https:\/\/gdksoftware.com\/nl#website"},"datePublished":"2020-09-30T14:01:19+00:00","dateModified":"2020-10-20T08:59:13+00:00","breadcrumb":{"@id":"https:\/\/gdksoftware.com\/nl\/kennisbank\/behavioral-driven-development-in-delphi#breadcrumb"},"inLanguage":"nl-NL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/gdksoftware.com\/nl\/kennisbank\/behavioral-driven-development-in-delphi"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/gdksoftware.com\/nl\/kennisbank\/behavioral-driven-development-in-delphi#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/gdksoftware.com\/nl"},{"@type":"ListItem","position":2,"name":"Knowledgebase","item":"https:\/\/gdksoftware.com\/nl\/kennisbank"},{"@type":"ListItem","position":3,"name":"Delphi","item":"https:\/\/gdksoftware.com\/nl\/kennisbank-categorie\/delphi"},{"@type":"ListItem","position":4,"name":"Behavioural driven development"}]},{"@type":"WebSite","@id":"https:\/\/gdksoftware.com\/nl#website","url":"https:\/\/gdksoftware.com\/nl","name":"GDK Software","description":"Zet de stip op je horizon","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/gdksoftware.com\/nl?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"nl-NL"}]}},"_links":{"self":[{"href":"https:\/\/gdksoftware.com\/nl\/wp-json\/wp\/v2\/knowledge\/2116","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gdksoftware.com\/nl\/wp-json\/wp\/v2\/knowledge"}],"about":[{"href":"https:\/\/gdksoftware.com\/nl\/wp-json\/wp\/v2\/types\/knowledge"}],"acf:post":[{"embeddable":true,"href":"https:\/\/gdksoftware.com\/nl\/wp-json\/wp\/v2\/team\/1655"}],"wp:attachment":[{"href":"https:\/\/gdksoftware.com\/nl\/wp-json\/wp\/v2\/media?parent=2116"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}