Sobes.tech
Junior — Middle

Wie trägt die Umkehrung der Abhängigkeiten dazu bei, den Testprozess des Codes zu erleichtern?

sobes.tech KI

Antwort von AI

Das Prinzip der Dependency Inversion (Dependency Inversion Principle) ermöglicht es, die High-Level-Logik von den konkreten Implementierungen der Abhängigkeiten zu trennen, indem diese durch Abstraktionen (z.B. Schnittstellen) ersetzt werden. Dies erleichtert das Testen, da in Tests Platzhalter oder Mocks anstelle der echten Abhängigkeiten verwendet werden können, ohne den zu testenden Code zu ändern.

Beispiel in C#:

public interface ILogger
{
    void Log(string message);
}

public class FileLogger : ILogger
{
    public void Log(string message) { /* in Datei schreiben */ }
}

public class UserService
{
    private readonly ILogger _logger;
    public UserService(ILogger logger)
    {
        _logger = logger;
    }

    public void CreateUser(string name)
    {
        // Logik zur Benutzererstellung
        _logger.Log($"Benutzer {name} erstellt");
    }
}

// In Tests kann ein Mock-ILogger übergeben werden:
public class MockLogger : ILogger
{
    public List<string> Messages = new List<string>();
    public void Log(string message) => Messages.Add(message);
}

Auf diese Weise sind Tests nicht von echten Implementierungen abhängig und können die Logik isoliert überprüfen.