반응형
mockK를 사용할 때 mockStatic과 mockObject는 비슷하게도 생겼고 사용 방법도 비슷해서
항상 헷갈렸습니다.
이번 포스팅에서 mockK에 있는 mockStatic과 mockObject의 차이점에 대해 알아보겠습니다.
static(Java) vs. object(Kotlin)
사실 Kotlin에는 static이 없습니다.
대신 Java에 static이 있는데요. Java에서 static은 다음과 같이 사용됩니다.
class JavaExample {
static int count = 0;
static void printCount() {
System.out.println("Count: " + count);
}
}
// 다음과 같이 사용된다.
JavaExample.count
JavaExample.printCount()
위와 같이 Java에서 static을 사용하면 인스턴스 생성 없이 바로 static이 붙은 변수나 함수를 호출해서 사용할 수 있게 된다.
kotlin에서는 이와 비슷한 기능으로 companion object가 있습니다.
class KotlinExample {
companion object {
var count = 0
fun printCount() {
println("Count: $count")
}
}
}
KotlinExample.count = 5
KotlinExample.printCount() // Count: 5
또 비슷한 기능으로 kotlin에서는 object가 있습니다.
object KotlinExample {
var count = 0
fun printCount() {
println("Count: $count")
}
}
KotlinExample.count = 10
KotlinExample.printCount() // Count: 10
object와 comapanion object의 차이점은 다음과 같습니다.
특징 | object(싱글톤) | companion object (정적 멤버) |
생성 방식 | 프로그램 내 단 하나의 인스턴스가 자동 생성됨 | 클래스 내부에 선언되어, 클래스의 정적 멤버처럼 동작 |
접근 방식 | ObjectName.property | ClassName.property |
Java 변환 시 | 싱글톤 클래스로 변환됨 | 정적 필드와 메서드로 변환됨 |
목적 | 전체를 싱글톤 + 메모리에 남가지 않기 위해 사용 | 클래스는 인스턴스로 사용함과 동시에 companion object 내부는 고정적으로 사용하기 위해 사용 |
mockK에서 mockStatic과 mockObject 차이
위 내용을 이해하면 이제 mockK에서 mockStatic과 mockObject 차이를 이해할 수 있게 된다.
mockStatic | mockObject | |
차이 | Java의 statck 메서드를 테스트할 때 | Kotlin의 object 또는 companion object를 테스트 할 때 |
참조
반응형
'안드로이드(kotlin)' 카테고리의 다른 글
Now in Android 샘플 분석하기 -2 (0) | 2025.03.09 |
---|---|
안드로이드에서 API 데이터를 mock 데이터로 받기 - node.js (0) | 2025.03.04 |
Now in Android 샘플 분석하기 -1 (0) | 2025.02.25 |
안드로이드 XML로 된 프로젝트를 Compose로 변환하기 (6) | 2024.10.21 |
안드로이드 특정 Cookie 값을 얻고 setCookie로 삭제하는 방법 (0) | 2024.10.10 |
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
댓글