F08(?): Feil & testing!
Men først: AutoComplete

AutoCompleteTextView
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<AutoCompleteTextView
android:id="@+id/countryAutoCompleteTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter a country">
</AutoCompleteTextView>
</LinearLayout>

Autocomplete-adapter
AutoCompleteTextView countryAutoCompleteTextView = (AutoCompleteTextView)
findViewById(R.id.countryAutoCompleteTextView);
final String[] countries = {
"Norway",
"Norfolk",
"Ananas",
"Andorra",
};
final ArrayAdapter<String> countriesAdapter = new ArrayAdapter<String>(
this, android.R.layout.simple_list_item_1, countries);
countryAutoCompleteTextView.setAdapter(countriesAdapter);Nøyaktig det samme som ListView



R.array.X
Teit med data i Java-koden(?)

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="countries">
<item>Andorra</item>
<item>United Arab Emirates</item>
<item>Afghanistan</item>
</string-array>
</resources>
final String[] countries = getResources().getStringArray(R.array.countries);final String[] countries = {
"Norway",
"Norfolk",
"Ananas",
"Andorra",
};Default ordering: samme rekkefølge som i arrayet
Other stuff
- completionThreshold
- <request-focus>
Demo
Time
Yay
Unntak(shåndtering)

- Ting kan treffe vifta
- Én tråd: UI
- Én exception = crash
- Bad reputation

Løsninger
ANR
- Threads!
- AsyncTask
"Has stopped"
- Try
- Catch
- Finally
LOGG & si fra til bruker!
Testing!
Flere strategier
- Black box
- White box
- Unit (enhetstesting)
- Integrasjonstesting
- Systemtesting
- +++
TDD (Test Driven Development)
Back to basics: JUnit (3!)
// given
Calculator calculator = new Calculator();
// when
int result = calculator.add(2, 3);
// then
assertEquals(5, result);public class CalculatorTestCase extends TestCase
{
private Calculator calculator;
@Override
public void setUp()
{
calculator = new Calculator();
}
// ...
}setUp() & tearDown()
- setUp: før hver test
- tearDown: etter hver test
- Åpne/lukke nettverkstilkobling?
Tester
- Begynner med "test", eks:
- testOnePlusOneEqualsTwo()
- testOnePlusOneEqualsTwo()
- Ingen andre metoder er tester
- Endret/penere i JUnit 4 (ikke Android)
Assert.*
Standard JUnit
- assertNull / assertNotNull
- assertTrue / assertFalse
- assertSame / assertNotSame (reference)
- assertEquals (value)
assert?
Eksempel: Calculator
package no.westerdals.autocomplete_demo;
import junit.framework.TestCase;
public class CalculatorTestCase extends TestCase
{
private Calculator calculator;
@Override
public void setUp()
{
calculator = new Calculator();
}
public void testAddition()
{
int a = 2, b = 3;
int expected = 5;
int actual = calculator.add(2, 3);
assertEquals(a + " + " + b + " should equal " + expected, expected, actual);
}
}

Ideer til testing
Orientation!
Config
- System language
- Keyboard availability
Battery life
External resources
Testing i Android
- Bygger på JUnit
- Ekstra Android-spesifikke API-er og tjenester
- Testene kjører på device (eller i emulator)
- Endret de siste tre ukene
- Endret de siste tre ukene
- Eget test-prosjekt (også endret)
Overblikk

Demo
Time
Yay
Exists!
Take focus
Intent payload
Øving
Kristine!
PG4600-08: Feil og testing!
By theneva
PG4600-08: Feil og testing!
- 601