Skip to content

Instantly share code, notes, and snippets.

@lgawin
Last active March 30, 2022 16:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lgawin/9f6a83622681fda10064ee4801437baa to your computer and use it in GitHub Desktop.
Save lgawin/9f6a83622681fda10064ee4801437baa to your computer and use it in GitHub Desktop.
JUnit 4 @rule and JUnit5 test extension to mockk `android.util.Log`
// JUnit5 test extension
//
// usage:
//
// @ExtendWith(MockkAndroidLog::class)
// class TestClass {
// ...
// }
import android.util.Log
import io.mockk.clearStaticMockk
import io.mockk.every
import io.mockk.mockkStatic
import org.junit.jupiter.api.extension.AfterAllCallback
import org.junit.jupiter.api.extension.BeforeAllCallback
import org.junit.jupiter.api.extension.ExtensionContext
class MockkAndroidLog : BeforeAllCallback, AfterAllCallback {
override fun beforeAll(context: ExtensionContext) {
mockkStatic(Log::class)
every { Log.v(any(), any()) } returns 0
every { Log.v(any(), any(), any()) } returns 0
every { Log.d(any(), any()) } returns 0
every { Log.d(any(), any(), any()) } returns 0
every { Log.i(any(), any()) } returns 0
every { Log.i(any(), any(), any()) } returns 0
every { Log.w(any(), any<String>()) } returns 0
every { Log.w(any(), any<Throwable>()) } returns 0
every { Log.w(any(), any(), any()) } returns 0
every { Log.e(any(), any()) } returns 0
every { Log.e(any(), any(), any()) } returns 0
every { Log.wtf(any(), any<String>()) } returns 0
every { Log.wtf(any(), any<Throwable>()) } returns 0
every { Log.wtf(any(), any(), any()) } returns 0
}
override fun afterAll(context: ExtensionContext) {
clearStaticMockk(Log::class)
}
}
// JUnit4 @Rule
//
// usage:
//
// class TestClass {
//
// @get:Rule val rule = MockkAndroidLoggerRule()
//
// ...
// }
import android.util.Log
import io.mockk.clearStaticMockk
import io.mockk.every
import io.mockk.mockkStatic
import org.junit.rules.ExternalResource
class MockkAndroidLoggerRule : ExternalResource() {
override fun before() {
super.before()
mockkStatic(Log::class)
every { Log.v(any(), any()) } returns 0
every { Log.v(any(), any(), any()) } returns 0
every { Log.d(any(), any()) } returns 0
every { Log.d(any(), any(), any()) } returns 0
every { Log.i(any(), any()) } returns 0
every { Log.i(any(), any(), any()) } returns 0
every { Log.w(any(), any<String>()) } returns 0
every { Log.w(any(), any<Throwable>()) } returns 0
every { Log.w(any(), any(), any()) } returns 0
every { Log.e(any(), any()) } returns 0
every { Log.e(any(), any(), any()) } returns 0
every { Log.wtf(any(), any<String>()) } returns 0
every { Log.wtf(any(), any<Throwable>()) } returns 0
every { Log.wtf(any(), any(), any()) } returns 0
}
override fun after() {
super.after()
clearStaticMockk(Log::class)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment