Junior — Middle
É possível realizar testes em métodos declarados como privados dentro da classe?
sobes.tech IA
Resposta da IA
No iOS (Swift/Objective-C), não é recomendado nem geralmente possível testar diretamente métodos privados devido às restrições de acesso. Os métodos privados destinam-se à implementação interna da classe e não devem ser testados diretamente.
No entanto, existem várias abordagens:
- Testar métodos públicos que usam métodos privados — assim verifica-se indiretamente a lógica dos métodos privados.
- Em Swift, pode-se usar
@testable importe tornar os métodosinternalem vez deprivate, para que os testes possam acessá-los. - Em Objective-C, pode-se usar categorias (category) nos testes para aceder aos métodos privados.
Exemplo em Swift:
// No módulo principal
class MyClass {
private func privateMethod() -> Int {
return 42
}
func publicMethod() -> Int {
return privateMethod() + 1
}
}
// Nos testes
@testable import MyModule
func testPublicMethod() {
let obj = MyClass()
XCTAssertEqual(obj.publicMethod(), 43)
}
Assim, é melhor testar o comportamento da classe através da interface pública, em vez de aceder diretamente aos métodos privados.