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 agradlew 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!