Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Softwaretests und Qualitätssicherung (https://www.delphipraxis.net/86-softwaretests-und-qualitaetssicherung/)
-   -   Wie Ausgaben auf UI testen? (https://www.delphipraxis.net/185630-wie-ausgaben-auf-ui-testen.html)

ULIK 25. Jun 2015 15:32

Wie Ausgaben auf UI testen?
 
Wie würdet ihr denn Folgendes testen?:

die zu testende Klasse zeichnet einen mehrzeiligen Text mit einem gegebenen Font auf einen beliebigen Canvas. Dabei wird die Stelle des Zeilenumbruchs durch eine gegebene maximale Breite definiert. Zudem ist es möglich, die Ausgabe mit einer Skalierung zu versehen, sprich ein Scale von 0.5 gibt den Text in einem Rechteck der halben max. Breite aus und in einem Font mit halber Schriftgröße.
Nach außen hat die Klasse nur eine einzige Methode: PaintToCanvas, der das Handle des Canvas, der Text, der Font, die Skalierung und die max. Breite mitgegeben wird.

Zu testen ist nun, daß bei gegebenen Font und variabler Skalierung, der Zeilenumbruch immer an der gleichen Stelle auftritt. Wie man das intern technisch löst ist, ist jetzt erst mal egal, mir geht's nur darum, wie/ob man so was mit Unittests testen kann.

Hintergrund: das ganz ist Teil eines Textrenderings das erweitert werden soll und da diese Sache mit der Skalierung sehr wichtig ist, wären mir Unittests dafür sehr recht.

vielen Dank!

BUG 25. Jun 2015 15:43

AW: Wie Ausgaben auf UI testen?
 
Da du auf ein Canvas malst, kannst du da direkt ein Bitmap-Canvas oder sogar ein gemocktes Canvas reinstecken.
Im ersten Fall müsstest du das Bitmap prüfen (vermutlich umständlich). Für den zweiten Fall kann man mit ein bisschen Wissen über den Algorithmus (z.b. "der Algorithmus ruft für jede Zeile TextOut auf") vermutlich auch etwas erreichen.

Vermutlich fährt man mit einem gemischten Ansatz nicht schlecht: Erst gucken ob alle Zeilen durch einen Zeilenumbruch oder einen Ausgabeaufruf getrennt sind. Ob z.B. die Breitenbeschränkung eingehalten wurde kann man dann relativ gut auf dem Ausgabe-Bitmap testen.

ULIK 26. Jun 2015 08:23

AW: Wie Ausgaben auf UI testen?
 
Danke für die Einschätzung! Dann wird's wohl auf ein paar Bildvergleiche rauslaufen. Warum: die PaintTo Methode gibt den Text intern nicht in einem Block wie TextOut aus, sondern zeichenweise. Dafür werden dann GDI+ Funktionen benutzt, die auf dem Handle des Canvas arbeiten. Kann man so was dann überhaupt mit einem Canvas-Mock abfangen? Ok, ich könnte jetzt die GDI+ Funktionen mocken; müßt ich direkt mal ausprobieren!
Einen Zeilenumbruch als Zeichen gibt es in diesem Sinne nicht, der Text wird dann nur an einer anderen Stelle auf dem Canvas ausgegeben.

Nochmal Danke, immerhin hat mir das Überlegen der Antwort wieder einige Ideen gebracht! :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:53 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz