Sobes.tech
Junior — Middle

Peut-on effectuer des tests sur des méthodes déclarées comme privées à l'intérieur de la classe?

sobes.tech IA

Réponse de l'IA

Il n’est pas recommandé ni généralement possible de tester directement les méthodes privées en iOS (Swift/Objective-C) en raison des restrictions d’accès. Les méthodes privées sont destinées à l’implémentation interne de la classe et ne doivent pas être testées directement.

Cependant, il existe plusieurs approches :

  1. Tester les méthodes publiques qui utilisent des méthodes privées — cela vérifie indirectement la logique des méthodes privées.
  2. En Swift, on peut utiliser @testable import et rendre les méthodes internal au lieu de private, pour que les tests puissent y accéder.
  3. En Objective-C, on peut utiliser des catégories (category) dans les tests pour accéder aux méthodes privées.

Exemple en Swift :

// Dans le module principal
class MyClass {
    private func privateMethod() -> Int {
        return 42
    }
    func publicMethod() -> Int {
        return privateMethod() + 1
    }
}

// Dans les tests
@testable import MyModule

func testPublicMethod() {
    let obj = MyClass()
    XCTAssertEqual(obj.publicMethod(), 43)
}

Il est donc préférable de tester le comportement de la classe via l’interface publique, plutôt que d’accéder directement aux méthodes privées.