Refactor - service packge
導入する
今回のキャンペーンでは、音楽プレーヤーのサービス関連類を再包装する.
まず再包装結果を確認し、再包装過程を共有します.
結果
AS-ISTO-BE
実習
Step1. パッケージとRenameの再構成
AS-ISTO-BEは問題と解決策1の依存性が強く、拡張性が低く、インタフェースを通じて依存性を解消し、問題と解決策2変数を増加し、方法名が不明確な再命名によって明確な問題と解決策3が直接実施するSeekbarThread消去計画実行器によって定期的に命令を実行する
Step2. SeekbarThread->計画実行サービスへの変更
override fun run() {
while (runFlag) {
for (observer in observers) {
observer.setCurrentProgress(currentStatus)
}
try {
Thread.sleep(1000)
} catch (e: InterruptedException) {
e.printStackTrace()
}
}
}
intervalExecutor?.scheduleAtFixedRate(
updateSeekBarPositionRunnable,
0L /*initialDelay*/,
REFRESH_INTERVAL_MS,
TimeUnit.MILLISECONDS
)
Step3. テストコードの作成
再パッケージ後のテストコードとデバッグログの設定
@Test
fun setMedia_success() {
Whitebox.setInternalState(
audioPlayerController,
"player",
mockMediaPlayer
)
doReturn(false).whenever(mockMediaPlayer).isPlaying
audioPlayerController.play()
verify(mockNotificationService, times(1)).onStateChanged(
MediaAction.MEDIA_PLAY,
isChangedMediaByButton = false
)
verify(mockPlayEndViewActivity, times(1)).onStateChanged(
MediaAction.MEDIA_PLAY,
isChangedMediaByButton = false
)
}
に感銘を与える
テストコードは本当に何度も挿入されました
慣れない不便で挫折する
Reference
この問題について(Refactor - service packge), 我々は、より多くの情報をここで見つけました https://velog.io/@heepie/Refactor-service-packgeテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol