Benutzer-Werkzeuge

Webseiten-Werkzeuge


cocoaheads:testing

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
cocoaheads:testing [2010/03/17 13:13] mrococoaheads:testing [2017/07/20 23:40] (aktuell) – [Unit Testing Cocoa] mro
Zeile 9: Zeile 9:
  * Firefox recht gut per Plugin: https://addons.mozilla.org/de/firefox/addon/1568  * Firefox recht gut per Plugin: https://addons.mozilla.org/de/firefox/addon/1568
  * Opera von Haus aus  * Opera von Haus aus
 +
 +
 = Unit Testing Cocoa = Unit Testing Cocoa
  
-//The main thing that distinguishes legacy code from non-legacy code is tests, or rather a lack of tests. [[http://www.objectmentor.com/resources/articles/WorkingEffectivelyWithLegacyCode.pdf|Michael Feathers]]//+Vortrag am 17. März 2010 
 + 
 +//The main thing that distinguishes legacy code from non-legacy code is tests, or rather a lack of tests. [[https://web.archive.org/web/20100819042330/http://www.objectmentor.com/resources/articles/WorkingEffectivelyWithLegacyCode.pdf|Michael Feathers]]//
  
 ----- -----
Zeile 18: Zeile 22:
  
 ungeordnete Stichpunkte ungeordnete Stichpunkte
- * gcov http://stackoverflow.com/questions/1385568/why-doesnt-gcov-report-any-lines-being-covered-by-my-unit-tests 
  * Michael Feathers http://www.objectmentor.com/omTeam/feathers_m.html  * Michael Feathers http://www.objectmentor.com/omTeam/feathers_m.html
  * Martin Fowler   * Martin Fowler 
Zeile 25: Zeile 28:
  * Michael T. Nygard http://www.pragprog.com/titles/mnee/release-it  * Michael T. Nygard http://www.pragprog.com/titles/mnee/release-it
  * SQLite Testing http://www.sqlite.org/testing.html  * SQLite Testing http://www.sqlite.org/testing.html
 +
 == Was ist ein Unit Test? == Was ist ein Unit Test?
  
Zeile 32: Zeile 36:
  * normalerweise in der gleichen Sprache geschrieben wie der zu testende Code,  * normalerweise in der gleichen Sprache geschrieben wie der zu testende Code,
  * nicht Teil des ausgelieferten Programms.  * nicht Teil des ausgelieferten Programms.
 +
 == Quelltext Impression == Quelltext Impression
 +
 <code objc> <code objc>
 #import <SenTestingKit/SenTestingKit.h> #import <SenTestingKit/SenTestingKit.h>
Zeile 59: Zeile 65:
  * eindeutig definiertes Verhalten ([[http://de.wikipedia.org/wiki/Design_by_contract|Design by Contract]]), Förderung der Teamarbeit,  * eindeutig definiertes Verhalten ([[http://de.wikipedia.org/wiki/Design_by_contract|Design by Contract]]), Förderung der Teamarbeit,
  * keine "vergessenen" Tests, da jeder Build alle prüft, Bedingung für Continuous Integration.  * keine "vergessenen" Tests, da jeder Build alle prüft, Bedingung für Continuous Integration.
 +
 == Wie geht's prinzipiell? == Wie geht's prinzipiell?
 +
  * Test Framework zur bequemen Entwicklung, Ausführung und für Berichte,  * Test Framework zur bequemen Entwicklung, Ausführung und für Berichte,
  * normalerweise pro Logikbaustein (Klasse) eine Testklasse,  * normalerweise pro Logikbaustein (Klasse) eine Testklasse,
Zeile 71: Zeile 79:
 } }
 </code> </code>
 +
 == Wie geht's mit Cocoa == Wie geht's mit Cocoa
 +
 {{ :cocoaheads:ocunit-target.png|}} {{ :cocoaheads:ocunit-target.png|}}
  
Zeile 79: Zeile 89:
 {{ :cocoaheads:ocunit-fail.png?400 }} {{ :cocoaheads:ocunit-fail.png?400 }}
  * ...und jetzt der schwierige Teil:  * ...und jetzt der schwierige Teil:
 +
 == Step & Trace == Step & Trace
  
 +{{ :cocoaheads:custom-executable.png|}}
 dazu brauchen wir ein "Custom Executable": dazu brauchen wir ein "Custom Executable":
  * Pfad ''Developer/usr/bin/otest'' relativ zu "Current SDK"  * Pfad ''Developer/usr/bin/otest'' relativ zu "Current SDK"
- * einige [[http://wiki.mro.name/orga/xcode_project_setup#unit_tests|Parameter und etliche Umgebungsvariablen]]+ * einige [[http://wiki.mro.name/iphone/xcode_project_setup#unit_tests|Parameter und etliche Umgebungsvariablen]]
 das können wir dann als ''Active Executable'' starten und debuggen. **Vorsicht:** das können wir dann als ''Active Executable'' starten und debuggen. **Vorsicht:**
  * Parameter und Umgebungsvariablen gehen in die ''*.pbxuser'' Datei ein und gehen drum leicht verloren.  * Parameter und Umgebungsvariablen gehen in die ''*.pbxuser'' Datei ein und gehen drum leicht verloren.
  * die Debugsitzung startet nur, wenn alle Tests erfolgreich sind (Build Abhängigkeit) - ich kommentiere die kritischen ''STAsserts'' zeitweise aus (Holzhammer)  * die Debugsitzung startet nur, wenn alle Tests erfolgreich sind (Build Abhängigkeit) - ich kommentiere die kritischen ''STAsserts'' zeitweise aus (Holzhammer)
 +
 +---------
 +{{ http://images.apple.com/hk/en/macosx/developers/images/icon_xcode_20090824.png}}
 +
 == NSLog == NSLog
 +
  * Terminal: ''xcodebuild'' auf das Test Target loslassen und die NSLogs kommen auf die Konsole  * Terminal: ''xcodebuild'' auf das Test Target loslassen und die NSLogs kommen auf die Konsole
  * XCode: ''Custom Executable'' als ''Active Executable'' und schon sehen wir die NSLogs auch.  * XCode: ''Custom Executable'' als ''Active Executable'' und schon sehen wir die NSLogs auch.
 +{{ :cocoaheads:nslog.png }}
 +
 == Exkurs: Entwicklungsprozesse == Exkurs: Entwicklungsprozesse
 +
  * [[http://de.wikipedia.org/wiki/Extreme_Programming#Praktiken|Extreme Programming (XP)]],  * [[http://de.wikipedia.org/wiki/Extreme_Programming#Praktiken|Extreme Programming (XP)]],
  * [[http://de.wikipedia.org/wiki/Testgetriebene_Entwicklung|Test Driven Development (TDD)]],  * [[http://de.wikipedia.org/wiki/Testgetriebene_Entwicklung|Test Driven Development (TDD)]],
Zeile 100: Zeile 120:
  
 == Was ich vermisse == Was ich vermisse
 +
  * einfachere Projekteinrichtung,  * einfachere Projekteinrichtung,
  * benutzerbezogene Einstellungen abschaffen,  * benutzerbezogene Einstellungen abschaffen,
Zeile 106: Zeile 127:
  
 == Locker bleiben == Locker bleiben
-//Don’t stress about unit tests. They are intended as a tool for ensuring good test coverage and memory management. Use them in that way to aid your development process. [[http://developer.apple.com/mac/library/documentation/DeveloperTools/Conceptual/UnitTesting/1-Articles/UTGuidelines.html#//apple_ref/doc/uid/TP40002172|ADC]]// 
  
 +//Don’t stress about unit tests. They are intended as a tool for ensuring good test coverage and memory management. Use them in that way to aid your development process. [[https://web.archive.org/web/20100223021458/http://developer.apple.com:80/mac/library/DOCUMENTATION/DeveloperTools/Conceptual/UnitTesting/1-Articles/UTGuidelines.html#//apple_ref/doc/uid/TP40002172|ADC]]//
  
  * Unit Tests verhindern natürlich [[http://cocoawithlove.com/2010/01/high-quality-in-software-development.html|nicht jeden Bug]],  * Unit Tests verhindern natürlich [[http://cocoawithlove.com/2010/01/high-quality-in-software-development.html|nicht jeden Bug]],
Zeile 113: Zeile 134:
  * ein laufendes Programm ist wichtiger als 100% Testabdeckung,  * ein laufendes Programm ist wichtiger als 100% Testabdeckung,
  * die ersten Tests für Spaghetti Code können allerdings frustrieren.  * die ersten Tests für Spaghetti Code können allerdings frustrieren.
 +
 == Querverweise / Lesetips == Querverweise / Lesetips
  
Zeile 121: Zeile 143:
  * [[http://cocoawithlove.com/2009/12/sample-iphone-application-with-complete.html|Cocoa with Love: A sample iPhone App with unit tests]]  * [[http://cocoawithlove.com/2009/12/sample-iphone-application-with-complete.html|Cocoa with Love: A sample iPhone App with unit tests]]
  * [[http://cocoawithlove.com/2009/12/sample-mac-application-with-complete.html|Cocoa with Love: A sample Mac Application with unit tests]]  * [[http://cocoawithlove.com/2009/12/sample-mac-application-with-complete.html|Cocoa with Love: A sample Mac Application with unit tests]]
- * [[http://wiki.mro.name/orga/xcode_project_setup#unit_tests|meine Zusammenfassung zur XCode Projekteinrichtung]]+ * [[http://wiki.mro.name/iphone/xcode_project_setup#unit_tests|meine Zusammenfassung zur XCode Projekteinrichtung]]
  
 == Vielen Dank == Vielen Dank
Zeile 133: Zeile 155:
  
 {{ :cocoaheads:cocoacode.png?200}} {{ :cocoaheads:cocoacode.png?200}}
-http://wiki.mro.name/cocoaheads/testing+http://mro.name/go/cocoaheads_testing
  
 ------ ------
Zeile 141: Zeile 163:
 ein Vortrag bei den [[http://www.cocoaheads.org/de/Munich/|CocoaHeads]] von  ein Vortrag bei den [[http://www.cocoaheads.org/de/Munich/|CocoaHeads]] von 
  
- +{{tag> Vortrag CocoaHeads Unit Test Cocoa XCode}}
-{{tag> CocoaHeads Unit Test Cocoa XCode}}+
cocoaheads/testing.1268827998.txt.gz · Zuletzt geändert: 2010/03/17 13:13 von mro