Jetpack Compose Tutorial 6 Implement a real-world design

Compose를 이용해 UI를 구성할 때, 제공되는 parameter 값을 항상 확인하자

Composable 파라미터로 modifier를 입력받는 것이 권장된다.

Android 구현 연습

No tests found for given includes

테스트 파일을 생성할 때, Junit5로 설정하고 만들었는데, gradle을 아무리 수정해도 고쳐지지 않았다.

파일을 지우고, Junit4로 생성하니 정상적으로 동작했다.

Android는 Junit5를 지원하지 않는다는 얘기를 들은 적이 있는데, 그것 때문인지 모르겠다.

JSONObject의 getJSONObject

JSONObject를 사용하는 코드를 UnitTest에서 사용할 때, 아래와 같은 에러가 나왔다.

Method optJSONObject in org.json.JSONObject not mocked. See <https://developer.android.com/r/studio-ui/build/not-mocked> for details.
java.lang.RuntimeException: Method optJSONObject in org.json.JSONObject not mocked. See <https://developer.android.com/r/studio-ui/build/not-mocked> for details.
	at org.json.JSONObject.optJSONObject(JSONObject.java)

공식 문서에 있는 내용처럼 mockking을 해보려고 했으나, 매 함수마다 리턴 값을 설정하는 것은 매우 번거로워 보였다.

JSONObject와 JSONArray와 같은 클래스에 사용되는 JSON이 android SDK의 일부이기 때문에 Unit test에서 에러가 발생한다고 한다. 그래서 아래 의존성을 추가하라고 되어 있는데, 정확한 원리는 모르겠다.

dependencies {
    ...
    testImplementation 'org.junit.jupiter:junit-jupiter:5.10.1'
    testImplementation 'org.json:json:20231013'
}

Unit Testing JSON Functions in Android

Maven Repository: org.json » json

ViewHolder에서 네트워크 호출 시 유의 사항

ViewHolder에서 네트워크와 같은 처리를 하고 있을 때, 빠른 스크롤 등으로 재사용이 된다면 어떻게 될까? 하고 있던 처리를 멈출 수 없다면, 예상과 다른 UI가 표시될 것이다.