Android Programjaim

Androidfejlesztes

Teszteles androidon #2

2016. augusztus 10. 09:16 - lacas82

Nezzuk mandroidon a teszteket, tesztelesi elofeltetelek:
Eloszor is a strukturat:

  • app/src/main/java

    a normal forraskodod ugye itt helyezkedik el

  • app/src/test/java 

    unit tesztek, amik a jvm-en futnak

  • app/src/androidTest/java 

    android tesztek, amik az eszkozon futnak

"error duplicate files in path" hiba javitasa:

""error duplicate files in path. Path in archive: LICENSE.txt"

gradle-be bemasoljuk ezt:

android {
    packagingOptions {
    exclude 'LICENSE.txt'
    }
}


dependencies-be pedig:

testCompile 'junit:junit:4.12'
testCompile 'org.hamcrest:hamcrest-library:1.3'


Futtatni a teszteket parancssorbol a
gradlew test
-el tudjuk

Vagy Android Studio-ban kurzor a Test class-on, jobb klikk, es Run ...Test

 

Teszt riportok helye:

app/build/reports/tests/debug/

Aktivaljuk a default visszateresi erteket a mocked android.jar-nal:

android {
  // ...
  testOptions {
    unitTests.returnDefaultValues = true
  }
}

 Teszt konyvtarak keszitese:

http://www.vogella.com/tutorials/AndroidTesting/article.html#androidtesting_creatingtestfolders

 Nezzunk egy egyszeru unittest-et androidon:

@Test
public void stringEmptyTest() {
String email = "";
assertEquals("Valid email " + email, EmailValidator.isValid(email), false);
}

@Test
public void stringNullTest() {
String email = null;
assertEquals("Valid email " + email, EmailValidator.isValid(email), false);
}

@Test
public void stringGoodTest1() {
String email = "asd.co@arm.hu";
assertEquals("Nem valid email " + email, EmailValidator.isValid(email), true);
}

@Test
public void stringGoodTest2() {
String email = "asd@arm.hu";
assertEquals("Nem valid email " + email, EmailValidator.isValid(email), true);
}

@Test
public void stringBadTest1() {
String email = "aSd_arm.hu";
assertEquals("Valid email " + email, EmailValidator.isValid(email), false);
}

..

stb

ha nyomunk AS-ben egy shift+f10-et (run), akkor azt az eredmenyt kapjuk pl hogy az
osszes teszt OK-val lefutott

Most nezzunk egy masik peldat:

public class Calculator {

public Calculator() { }

public int plus(int a, int b) {
return 0;
}

public int minus(int a, int b) {
return 0;
}
}

majd a teszt ra:

public class CalculatorTest {

private Calculator mCalculator;

@Before
public void before() {
mCalculator = new Calculator();
}

@Test
public void testPlus() {
assertEquals("Hiba", 7, mCalculator.plus(2, 5));
}

@Test
public void testMinus() {
assertEquals("Hiba", -3, mCalculator.minus(2, 5));
}
...

Ha futtatjuk ezt kapjuk:

java.lang.AssertionError: Hiba
Expected :-3
Actual   :0

java.lang.AssertionError: Hiba
Expected :7
Actual   :0

Azaz, nyilvanvaloan a vart ertek 7 es -3 kene, hogy legyen. Mivel jelen esetben mindig 0-at vissza,
igy ertheto miert, javitsuk ki az eredeti kodot.

public int plus(int a, int b) {
return a + b;
}

public int minus(int a, int b) {
return a - b;
}

majd futtassuk le ujra a tesztet:

es minden lefutott OK-val!



Címkék: teszt junit unittest