<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ebene7 &#187; PHPUnit</title>
	<atom:link href="http://blog.ebene7.com/schlagwort/phpunit/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.ebene7.com</link>
	<description></description>
	<lastBuildDate>Tue, 04 Jun 2013 18:57:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Einfache UnitTests für Magento</title>
		<link>https://blog.ebene7.com/2010/08/24/einfache-unittests-fur-magento/</link>
		<comments>https://blog.ebene7.com/2010/08/24/einfache-unittests-fur-magento/#comments</comments>
		<pubDate>Tue, 24 Aug 2010 05:00:39 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Qualitätssicherung]]></category>
		<category><![CDATA[AutoLoader]]></category>
		<category><![CDATA[Factory]]></category>
		<category><![CDATA[Magento]]></category>
		<category><![CDATA[PHPUnit]]></category>
		<category><![CDATA[Reflection]]></category>
		<category><![CDATA[Shop]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[Zend_CodeGenerator]]></category>

		<guid isPermaLink="false">http://blog.ebene7.com/?p=1118</guid>
		<description><![CDATA[Seit nun knapp fünf Monaten stelle ich mich der Herausforderung saubere Softwareentwicklung und Magento in Einklang zu bringen. Ein kleiner Schritt in diese Richtung war der Einsatz von UnitTests, um mögliche Fehler während der Entwicklung schneller zu finden. Viele Fehler &#8230; <a href="https://blog.ebene7.com/2010/08/24/einfache-unittests-fur-magento/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Seit nun knapp fünf Monaten stelle ich mich der Herausforderung saubere Softwareentwicklung und Magento in Einklang zu bringen. Ein kleiner Schritt in diese Richtung war der Einsatz von UnitTests, um mögliche Fehler während der Entwicklung schneller zu finden.</p>
<p><span id="more-1118"></span>Viele Fehler treten bei Magento schon durch eine fehlerhafte Konfiguration auf, was zur Folge haben kann, dass wir keine Instanz unser lokalisierten Klasse bekommen, sondern ein standard Magento-Objekt oder einen Fehler, weil keine passende Klasse gefunden wird.</p>
<p>So habe ich also angefangen, die Existenz der zu prüfenden Klassen zu testen und ob die Mage-Factory das gewünschte Objekt zurück gibt. Bei einigen Klassen ist es zudem auch noch wichtig, dass sie von der richtigen Elternklasse abgeleitet sind.</p>
<p>Da sich diese Tests immer wiederholten, zeichnete sich schnell ein Muster ab. Ebenso erfolgt auch die Namesgebung der Magentoklassen nach einem gewissen Muster. Was wäre also naheliegender, als beides miteinander zu verbinden und so in Zukunft eine Menge unnützer Schreibarbeit zu sparen?</p>
<p>Als erstes habe ich dafür einen erweiteren TestCase vom PHPUnit-TestCase abgeleitet, der mir weitere vereinfachte Asserts zur Verfügung stellt und die Tests dadurch auch etwas lesbarer macht.</p>
<pre>$this-&gt;assertClassExists($classname);</pre>
<p>statt</p>
<pre>$this-&gt;assertTrue(class_exists($classname));</pre>
<p>Auf diesem Wege lassen sich dann auch z.B. Getter und Setter einfach auf das gewünschte Standardverhalten prüfen.</p>
<p>Im nächsten Schritt habe ich einen Entity-TestCase abgeleitet, der als Basis für alle weiteren TestCases für Models, Blocks und Helper dienen soll. Dieser ist in sich schon ein wenig intelligenter und erkennt anhand des Namens der Test-Klasse, welche Klasse getestet werden soll, welchen Typ diese hat und welche die Standard-Elternklasse ist.</p>
<p>Diese Informationen werden, nebenbei bemerkt, durch protected Methoden ermittelt und könnten zu jeder Zeit durch noch speziellere TestCases wieder überschrieben werden.</p>
<p>Mit den nun vorliegenden Informationen ist diese TestCase-Klasse mächtig genug, um alleine durch Vererbung die grundlegenden Tests durchzuführen.</p>
<p>Für die jeweiligen Typen, z.B. Model habe ich dann noch weitere TestCases abgeleitet, um dort noch spezielle Methoden implementieren zu können.</p>
<p>Ein sehr einfacher Test für die Model-Klasse &#8220;Mein_Customer_Model_Customer&#8221; sähe dann beispielsweise so aus:</p>
<pre>class Mein_Customer_Model_CustomerTest extends Mein_Model_TestCase
{
}</pre>
<p>Dadurch würde nun automatisch getestet werden, ob der Autoloader die Klasse &#8220;Mein_Customer_Model_Customer&#8221; finden kann, diese von der Magento-Model-Klasse erbt und ob die Factory aufgrund der Konfiguration auch das richtige Objekt liefert.</p>
<p>Ich denke, dass es viel einfacher nicht mehr geht und das Argument gegen Tests damit dann auch aus der Welt sein sollte.</p>
<p>Kleiner Tipp: Wenn man es nun noch etwas konfortabler mag, dann kann man sich seine Models auch mit dem Zend_CodeGenerator bauen lassen und die Tests gleich mit.</p>
]]></content:encoded>
			<wfw:commentRss>https://blog.ebene7.com/2010/08/24/einfache-unittests-fur-magento/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Webentwicklung in virtueller Umgebung</title>
		<link>https://blog.ebene7.com/2010/03/26/webentwicklung-in-virtueller-umgebung/</link>
		<comments>https://blog.ebene7.com/2010/03/26/webentwicklung-in-virtueller-umgebung/#comments</comments>
		<pubDate>Fri, 26 Mar 2010 11:00:15 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Server und Technik]]></category>
		<category><![CDATA[Ant]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[CodeSniffer]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[phpMyAdmin]]></category>
		<category><![CDATA[PHPUnit]]></category>
		<category><![CDATA[Samba]]></category>
		<category><![CDATA[Secure Shell]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[Sun VirtualBox]]></category>
		<category><![CDATA[Virtualisierung]]></category>
		<category><![CDATA[Webserver]]></category>

		<guid isPermaLink="false">http://blog.ebene7.com/?p=509</guid>
		<description><![CDATA[In den letzten Tagen habe ich mich etwas mit der Virtualisierungssoftware VirtualBox von Sun Microsystems beschäftigt und will nun einmal über die Möglichkeiten und die Vorteile dieser Technik im Zusammenhang mit der Webentwicklung berichten. Die meisten PHP-Programmierer, sofern sie nicht &#8230; <a href="https://blog.ebene7.com/2010/03/26/webentwicklung-in-virtueller-umgebung/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In den letzten Tagen habe ich mich etwas mit der Virtualisierungssoftware <a href="http://de.wikipedia.org/wiki/VirtualBox" target="_blank">VirtualBox</a> von Sun Microsystems beschäftigt und will nun einmal über die Möglichkeiten und die Vorteile dieser Technik im Zusammenhang mit der Webentwicklung berichten.</p>
<p><span id="more-509"></span>Die meisten PHP-Programmierer, sofern sie nicht auf einem Linux-System mit grafischer Oberfläche arbeiten, werden das Problem sicherlich gut kennen.</p>
<p>Wenn man nur einen Rechner zur Verfügung hat und alle Dienste unter Windows laufen entspricht das sicherlich nicht unserem Live-System und wir können nicht alles zuverlässig testen und sind auch sonst an vielen Stellen eingeschränkt in unserer Arbeit. Zudem laufen die Dienste in der Regel immer mit an, auch wenn wir nicht Programmieren wollen und verbrauchen dann unnötig Rechenleistung.</p>
<p>Die zweite Möglichkeit wäre dann noch ein zweiter Entwicklungsrechner, auf dem wir ein Linux installieren und dann über das Netzwerk arbeiten. Das würde uns einen weiteren Rechner und natürlich auch noch Strom kosten. Selbst wenn dieser Entwicklungsserver von einem ganzen Team genutzt würde, besteht immernoch die Gefahr, das eine Mitarbeiter die Kiste aus Versehen in die Knie zwingt.</p>
<p>Durch die Arbeit mit der Virtuellen Box (oder vergleichbaren Programmen) kann nun jeder Entwickler auf seinem Windows gleichzeitig auch ein Linux-System zur Verfügung haben und dessen Vorteile nutzen (z.B. <a href="http://de.wikipedia.org/wiki/Symbolische_Verkn%C3%BCpfung" target="_blank">SymLinks</a>, <a href="http://de.wikipedia.org/wiki/Cronjob" target="_blank">Cronjobs</a>).</p>
<p>Einmal installierte und konfigurierte Systeme lassen sich exportieren und wieder an andere Verteilen, so dass eine einheitliche und dennoch individuelle Entwicklung möglich ist. Die Zeitersparnis beim Aufsetzen eines neues Entwicklungsrechners ist dabei enorm.</p>
<p>Die Gastsysteme können nach der Installation gewöhnlich wie jeder andere Rechner im Netzwerk angesprochen werden, d.h. wir könnten unsere PHP-Dateien mit <a href="http://de.wikipedia.org/wiki/File_Transfer_Protocol" target="_blank">FTP</a> hochladen oder einfach eine <a href="http://de.wikipedia.org/wiki/Samba_%28Software%29" target="_blank">Samba</a>-Freigabe unseres virtuellen Servers nutzen.</p>
<p>Auf die einzelnen Schritte der Installation gehe ich in diesem Artikel nicht ein, könnte das aber bei ausreichenden Interesse für einen weiteren Artikel einplanen.</p>
<p>Meine Installation basiert auf einem Debian-Linux. Die Konfiguration beinhaltet neben den typischen LAMP-Komponenten (Apache2, MySQL und PHP5), u.A. Samba für die Netzwerkfreigabe, einen <a href="http://de.wikipedia.org/wiki/Ssh" target="_blank">SSH</a>-Server, um mit <a href="http://de.wikipedia.org/wiki/Putty" target="_blank">PuTTY</a> darauf arbeiten zu können, <a href="http://de.wikipedia.org/wiki/Pear" target="_self">PEAR</a>, PHP-CodeSniffer, <a href="http://de.wikipedia.org/wiki/PHPUnit" target="_blank">PHPUnit</a>, <a href="http://de.wikipedia.org/wiki/Apache_Ant" target="_blank">Apache Ant</a>, sowie <a href="http://de.wikipedia.org/wiki/PhpMyAdmin" target="_blank">phpMyAdmin</a> und verschiedene <a href="http://framework.zend.com/" target="_blank">Zend Framework</a> Versionen.</p>
<p>Das exportierte Image ist dabei mit 734 MB klein genug, dass es auf einer CD oder einem USB-Stick weitergeben werden kann.</p>
<p>Die Technik der Virtualisierung ist nicht neu, aber ich denke, es ist eine gute und vor allem kostengünstige Alternative zu den anderen genannten Möglichkeiten.</p>
]]></content:encoded>
			<wfw:commentRss>https://blog.ebene7.com/2010/03/26/webentwicklung-in-virtueller-umgebung/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
