Junior — Middle
El lehet végezni a privátként deklarált módszerek tesztelését az osztályon belül?
sobes.tech MI
Válasz az MI-től
iOS (Swift/Objective-C) környezetben nem javasolt és általában nem is lehetséges közvetlenül tesztelni a privát metódusokat az elérhetőségi korlátozások miatt. A privát metódusokat a osztály belső megvalósítására szánták, és nem szabad közvetlenül tesztelni őket.
Azonban több megközelítés is létezik:
- Tesztelje azokat a nyilvános metódusokat, amelyek privát metódusokat használnak — így közvetve ellenőrizve a privát metódusok logikáját.
- Swift-ben használhatja az
@testable import-ot, és a metódusokatinternal-ként állíthatja be aprivatehelyett, így a tesztek hozzáférhetnek hozzájuk. - Objective-C-ben a tesztekben kategóriákat (category) használhat a privát metódusok eléréséhez.
Swift példával:
// A fő modulban
class MyClass {
private func privateMethod() -> Int {
return 42
}
func publicMethod() -> Int {
return privateMethod() + 1
}
}
// Tesztekben
@testable import MyModule
func testPublicMethod() {
let obj = MyClass()
XCTAssertEqual(obj.publicMethod(), 43)
}
Ezért jobb a osztály viselkedését a nyilvános interfészén keresztül tesztelni, mint közvetlenül a privát metódusokat elérni.