Unit-Tests und instrumentierte Tests | Teil 1
Zwei Arten von Unit-Tests
- JVM-Test (Lokaler Unit-Test)
- Test auf dem Gerät (Instrumentierungstest)
- → UI-Test (Interaktion mit Ansichten)
- → Nicht-UI-Test (Content, Assets Manager usw.)
Bei Unit-Tests handelt es sich um eine Methode zum isolierten Testen einzelner Codeeinheiten. Dabei handelt es sich um eine Software-Testmethode, bei der die kleinsten testbaren Teile einer Anwendung, sogenannte Units, einzeln und unabhängig auf ordnungsgemäße Funktion getestet werden. Mit dieser Art von Tests wird überprüft, ob die einzelnen Codeeinheiten wie Methoden und Funktionen wie vorgesehen funktionieren. Unit-Tests sind in der Regel automatisiert und werden als Teil des Build-Prozesses ausgeführt. Sie sind schnell, einfach zu schreiben und können häufig ausgeführt werden, wodurch schnelles Feedback zur Qualität des Codes gegeben wird.
In Android wird das Framework für Unit-Tests von JUnit bereitgestellt, einem weit verbreiteten Test-Framework für Java. JUnit ist im Android SDK enthalten und kann daher problemlos zu jedem Android-Projekt hinzugefügt werden.
Hier ist ein Beispiel für einen einfachen Unit-Test in Android mit JUnit:
import org.junit.Test
import org.junit.Assert.*
class ExampleUnitTest {
@Test
fun addition_isCorrect() {
assertEquals(4, 2 + 2)
}
}
Ein weiteres Beispiel: Sie können eine Funktion testen, die einen Parameter erwartet und einen Wert zurückgibt:
class Calculator {
fun add(a: Int, b: Int): Int = a + b
}
class CalculatorTest {
private val calculator = Calculator()
@Test
fun add_isCorrect() {
assertEquals(4, calculator.add(2, 2))
}
}
Zusammenfassend handelt es sich beim Unit-Test um eine Software-Testmethode, bei der die kleinsten testbaren Teile einer Anwendung, sogenannte Units, einzeln und unabhängig auf ordnungsgemäße Funktion getestet werden. In Android wird das Framework für Unit-Tests von JUnit bereitgestellt, einem weit verbreiteten Test-Framework für Java. JUnit ist im Android SDK enthalten und kann daher problemlos zu jedem Android-Projekt hinzugefügt werden. Es ist ein wesentlicher Bestandteil jedes Android-App-Entwicklungsprozesses, trägt dazu bei, sicherzustellen, dass der Code korrekt funktioniert, und erleichtert das Erkennen und Erfassen Beheben Sie Fehler frühzeitig im Entwicklungsprozess.
Vorteile von Unit-Tests:
- Unit-Tests erhöhen das Vertrauen in die Änderung/Pflege von Code. Wenn gute Unit-Tests geschrieben werden und diese bei jeder Codeänderung ausgeführt werden, können wir alle durch die Änderung entstandenen Fehler umgehend erkennen. Wenn Codes bereits weniger voneinander abhängig sind, um Unit-Tests zu ermöglichen, sind außerdem die unbeabsichtigten Auswirkungen von Änderungen an Code geringer.
- Codes sind wiederverwendbar. Um Unit-Tests zu ermöglichen, müssen Codes modular sein. Dies bedeutet, dass Codes einfacher wiederverwendet werden können.
- Durch die Reduzierung der Fehler, die bei Systemtests oder Abnahmetests auftreten können, wird die Entwicklung beschleunigt.
- Das Debuggen ist einfach. Wenn ein Test fehlschlägt, müssen nur die neuesten Änderungen debuggt werden. Bei Tests auf höheren Ebenen müssen Änderungen, die über mehrere Tage/Wochen/Monate hinweg vorgenommen wurden, gescannt werden.
- Codes sind zuverlässiger.
@Test
fun pallindrome{
//Arrange
//Act
//Assert
}
Wie Sie sehen können, ist val sample = sample() Arrange
und val result = sample.isPallindrome(“hello”) ist Act
und „assertEquals(false,result)“ ist das Assert
Hier ist „false“ der erwartete Wert und „result“ der Wert, den wir durch die Funktion erhalten. Danach stimmt es mit diesen Werten überein, je nachdem, welches Ergebnis der Testfall besteht oder nicht
All diese drei Dinge machen das Testen zur Logik
Ich werde einen String testen, bei dem ich überprüfe, ob ein String ein Palindrom ist oder nicht
package com.example.unittesting.utils
import org.junit.Assert.*
import org.junit.Test
class sampleTest {
@Test
fun isPallindrome() {
//Arrange
val sample = sample()
//Act
val result = sample.isPallindrome("hello")
//Assert
assertEquals(false,result)
}
@Test
fun isPallindrome_level_expectedTrue() {
//Arrange
val sample = sample()
//Act
val result = sample.isPallindrome("level")
//Assert
assertEquals(true,result)
}
@Test
fun isPallindrome_civic_expectedTrue() {
//Arrange
val sample = sample()
//Act
val result = sample.isPallindrome("civic")
//Assert
assertEquals(true,result)
}
}
Wie Sie sehen können, wurden alle Testfälle gemäß dem erwarteten Wert bestanden
Im nächsten Artikel werden wir instrumentierte Tests sehen. Weitere Informationen zu Unit-Tests finden Sie in diesem Dokument
Über mich
Hallo,
Ich bin Abhay Saini und arbeite als Android-Entwickler bei AppyHigh. Ich bin ein Student im vorletzten Studienjahr am Indian Institute of Information Technology, Una . Ein begeisterter Studienanfänger mit hochmotivierter, schneller Lernfähigkeit und Führungsqualitäten, der einen B.Tech in Informationstechnologie anstrebt.
Wenn Sie ein Problem mit Android haben, rufen Sie mich einfach an [email protected] oder Linkedin
Einen schönen Tag noch!!

![Was ist überhaupt eine verknüpfte Liste? [Teil 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































