Sobes.tech
Junior

Erzählen Sie uns vom Triple-A-Prinzip im Testen (Arrange, Act, Assert).

sobes.tech KI

Antwort von AI

Das Triple A-Prinzip (Arrange,Act,Assert) hilft dabei, Unit-Tests zu strukturieren, um deren Lesbarkeit und Wartbarkeit zu verbessern. Es teilt jeden Test in drei klare Phasen:

  1. Arrange (Vorbereitung):

    • In dieser Phase wird die Testumgebung eingerichtet, notwendige Objekte werden initialisiert, es werden Fixtures, Mocks oder Stubs erstellt, um die zu testende Komponente zu isolieren.
    • Es werden Eingabedaten für die getestete Funktion oder Methode festgelegt.
  2. Act (Aktion):

    • Die Hauptaktion, die getestet werden soll, wird ausgeführt.
    • Dies kann ein Aufruf der getesteten Methode oder die Ausführung einer bestimmten Operation sein.
  3. Assert (Überprüfung):

    • Das Ergebnis der Aktion wird überprüft.
    • Das erwartete Ergebnis wird mit dem tatsächlichen verglichen.
    • Es werden Assertion-Methoden aus dem Test-Framework (z.B. JUnit, NUnit, pytest) verwendet, um Bedingungen zu überprüfen.

Beispiel in Python mit pytest:

# app.py
class Calculator:
    def add(self, a, b):
        return a + b
# test_calculator.py
import pytest
from app import Calculator

def test_add_positive_numbers():
    """
    Test der Addition zweier positiver Zahlen.
    """
    # Arrange
    calculator = Calculator()
    num1 = 5
    num2 = 3
    expected_result = 8

    # Act
    actual_result = calculator.add(num1, num2)

    # Assert
    assert actual_result == expected_result, f"Expected {expected_result}, but got {actual_result}"

def test_add_negative_numbers():
    """
    Test der Addition zweier negativer Zahlen.
    """
    # Arrange
    calculator = Calculator()
    num1 = -5
    num2 = -3
    expected_result = -8

    # Act
    actual_result = calculator.add(num1, num2)

    # Assert
    assert actual_result == expected_result, f"Expected {expected_result}, but got {actual_result}"

Vorteile der Verwendung von Triple A:

  • Lesbarkeit: Die Teststruktur wird verständlicher, was das Lesen und Verstehen erleichtert.
  • Wartbarkeit: Die klare Trennung der Phasen erleichtert Änderungen und Fehlerbehebungen in den Tests.
  • Fokus: Jede Phase konzentriert sich auf ihre spezifische Aufgabe, was das Schreiben zielgerichteter Tests unterstützt.
  • Standardisierung: Die Einführung von Triple A im Team fördert die Einheitlichkeit beim Schreiben von Tests.