<?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>onCreate.nl &#187; Testen</title>
	<atom:link href="http://www.oncreate.nl/archives/category/testen/feed" rel="self" type="application/rss+xml" />
	<link>http://www.oncreate.nl</link>
	<description>Nederlandse Android Developers Groep</description>
	<lastBuildDate>Sun, 09 Jan 2011 20:54:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>UI testen met Android JUnit of Robotium?</title>
		<link>http://www.oncreate.nl/archives/122</link>
		<comments>http://www.oncreate.nl/archives/122#comments</comments>
		<pubDate>Tue, 30 Nov 2010 13:35:45 +0000</pubDate>
		<dc:creator>ians</dc:creator>
				<category><![CDATA[Applicaties]]></category>
		<category><![CDATA[Testen]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Android JUnit]]></category>
		<category><![CDATA[Luminis]]></category>
		<category><![CDATA[Robotium]]></category>
		<category><![CDATA[UI Testen]]></category>

		<guid isPermaLink="false">http://www.oncreate.nl/?p=122</guid>
		<description><![CDATA[Ik ben een student aan de Hogeschool in Arnhem en ik studeer informatica. Ik loop nu stage bij Luminis Software Development. Ik heb o.a. de opdracht gekregen om te onderzoeken hoe een Android applicatie getest kan worden. De Android developers website geeft al een aantal voorbeelden voor het UI testen van een applicatie. Het schrijven]]></description>
			<content:encoded><![CDATA[<p>Ik ben een student aan de Hogeschool in Arnhem en ik studeer  informatica. Ik loop nu stage bij Luminis Software Development. Ik heb  o.a. de opdracht gekregen om te onderzoeken hoe een Android applicatie  getest kan worden. De Android developers website geeft al een aantal  voorbeelden voor het UI testen van een applicatie. Het schrijven van een  UI test zoals de Android developers website beschrijft is redelijk  complex en zorgt ook voor veel code.</p>
<p>Na wat onderzoek ben ik tegen het test framework Robotium aangelopen.  De website geeft aan dat het framework gebruikt kan worden voor  functie, systeem en acceptatie testen. Een onderdeel van een systeem  test is een (G)UI test.</p>
<h2><a name="UItestenmetAndroidJUnitofRobotium?-Waarover?"></a>Waarover?</h2>
<p>In dit artikel bespreek ik door middel van een voorbeeld het verschil  tussen een UI test met Android JUnit en een UI test met Robotium.</p>
<h2><a name="UItestenmetAndroidJUnitofRobotium?-UITestmetAndroidJUnit"></a>UI Test met Android JUnit</h2>
<p>Op de Android developers <a rel="nofollow" href="http://developer.android.com/resources/tutorials/testing/activity_test.html">pagina</a> is een kleine handleiding te vinden hoe je een Android UI test schrijft voor een Spinner applicatie.</p>
<p>De UI test ziet er dan als volgt uit:</p>
<div>
<div><strong>SpinnerActivityTest.java</strong></div>
<div>
<pre>public void testSpinnerUI() {
		mActivity.runOnUiThread(new Runnable() {
			public void run() {
				mSpinner.requestFocus();
				mSpinner.setSelection(INITIAL_POSITION);
			}
		});
		this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
		for (int i = 1; i &lt;= TEST_POSITION; i++) {
			this.sendKeys(KeyEvent.KEYCODE_DPAD_DOWN);
		}
		this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
		mPos = mSpinner.getSelectedItemPosition();
		mSelection = (String) mSpinner.getItemAtPosition(mPos);
		TextView resultView = (TextView) mActivity
				.findViewById(com.android.example.spinner.R.id.SpinnerResult);
		String resultText = (String) resultView.getText();
		assertEquals(resultText, mSelection);
	}</pre>
</div>
</div>
<h2><a name="UItestenmetAndroidJUnitofRobotium?-UITestmetRobotium"></a>UI Test met Robotium</h2>
<p>Op de website van <a rel="nofollow" href="http://code.google.com/p/robotium/">Robotium</a> is meer te vinden over Robotium en hoe je er mee aan de slag kan.</p>
<p>Wanneer een vergelijkbare UI test met Robotium wordt geschreven ziet het er als volgt uit:</p>
<div>
<div><strong>SpinnerActivityTest.java</strong></div>
<div>
<pre>public void testSpinnerUI() throws Exception {
		ArrayList&lt;Spinner&gt; spinners = solo.getCurrentSpinners();
		int itemCount = solo.getCurrentSpinners().get(0).getCount();
		solo.pressSpinnerItem(0, -itemCount);
		solo.pressSpinnerItem(0, TEST_POSITION);
		String currentItem = spinners.get(0).getSelectedItem().toString();
		assertEquals(RESULT_SELECTION, currentItem);
	}</pre>
</div>
</div>
<h2><a name="UItestenmetAndroidJUnitofRobotium?-Hetverschil?"></a>Het verschil?</h2>
<ol>
<li>Het is meteen duidelijk dat de hoeveelheid code meteen wordt gehalveerd.</li>
<li>Voor Robotium is er weinig kennis van de code nodig, sterker nog  wanneer je de APK hebt hoef je de source code niet eens te hebben.</li>
<li>Robotium doet heel veel dingen die je anders zelf moet doen, zie  bijvoorbeeld de mSpinner.requestFocus() functie die zoals de naam als  doet vermoeden voor de focus zorgt, dit is bij Robotium niet nodig&#8230;</li>
</ol>
<h2><a name="UItestenmetAndroidJUnitofRobotium?-Conclusie"></a>Conclusie</h2>
<p>Ik kan geen groot nadeel bedenken bij het gebruik van Robotium ten  overstaande van Android JUnit testen. Het lijkt erop dat Robotium alleen  iets trager is in deze test.</p>
<p>Er wordt nog steeds hard gewerkt aan Robotium, dus we kunnen hopelijk  binnenkort weer nieuwe functionaliteiten verwachten zoals een  screenshot bij een gefaalde test.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.oncreate.nl/archives/122/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

