How to use SpyTest class of test package

Best Mockito-kotlin code snippet using test.SpyTest

WindowCallbackWrapperTest.kt

Source:WindowCallbackWrapperTest.kt Github

copy

Full Screen

1/*2 * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0.3 * This product includes software developed at Datadog (https://www.datadoghq.com/).4 * Copyright 2016-Present Datadog, Inc.5 */6package com.datadog.android.rum.internal.instrumentation.gestures7import android.app.Application8import android.content.res.Resources9import android.view.KeyEvent10import android.view.MenuItem11import android.view.MotionEvent12import android.view.Window13import com.datadog.android.core.internal.CoreFeature14import com.datadog.android.rum.GlobalRum15import com.datadog.android.rum.NoOpRumMonitor16import com.datadog.android.rum.RumActionType17import com.datadog.android.rum.RumAttributes18import com.datadog.android.rum.RumMonitor19import com.datadog.android.utils.forge.Configurator20import com.nhaarman.mockitokotlin2.any21import com.nhaarman.mockitokotlin2.argThat22import com.nhaarman.mockitokotlin2.doReturn23import com.nhaarman.mockitokotlin2.eq24import com.nhaarman.mockitokotlin2.inOrder25import com.nhaarman.mockitokotlin2.mock26import com.nhaarman.mockitokotlin2.spy27import com.nhaarman.mockitokotlin2.verify28import com.nhaarman.mockitokotlin2.verifyZeroInteractions29import com.nhaarman.mockitokotlin2.whenever30import fr.xgouchet.elmyr.Forge31import fr.xgouchet.elmyr.junit5.ForgeConfiguration32import fr.xgouchet.elmyr.junit5.ForgeExtension33import java.lang.ref.WeakReference34import org.assertj.core.api.Assertions.assertThat35import org.junit.jupiter.api.AfterEach36import org.junit.jupiter.api.BeforeEach37import org.junit.jupiter.api.Test38import org.junit.jupiter.api.extension.ExtendWith39import org.junit.jupiter.api.extension.Extensions40import org.mockito.Mock41import org.mockito.junit.jupiter.MockitoExtension42import org.mockito.junit.jupiter.MockitoSettings43import org.mockito.quality.Strictness44@Extensions(45    ExtendWith(46        MockitoExtension::class,47        ForgeExtension::class48    )49)50@ForgeConfiguration(Configurator::class)51@MockitoSettings(strictness = Strictness.LENIENT)52internal class WindowCallbackWrapperTest {53    lateinit var testedWrapper: WindowCallbackWrapper54    @Mock55    lateinit var mockCallback: Window.Callback56    @Mock57    lateinit var mockGestureDetector: GesturesDetectorWrapper58    @Mock59    lateinit var mockAppContext: Application60    @Mock61    lateinit var mockResources: Resources62    @Mock63    lateinit var mockRumMonitor: RumMonitor64    @BeforeEach65    fun `set up`() {66        testedWrapper = WindowCallbackWrapper(67            mockCallback,68            mockGestureDetector69        )70        whenever(mockAppContext.resources).thenReturn(mockResources)71        CoreFeature.contextRef = WeakReference(mockAppContext)72        GlobalRum.registerIfAbsent(mockRumMonitor)73    }74    @AfterEach75    fun `tear down`() {76        CoreFeature.contextRef = WeakReference(null)77        GlobalRum.monitor = NoOpRumMonitor()78        GlobalRum.isRegistered.set(false)79    }80    @Test81    fun `dispatchTouchEvent will delegate to wrapper`(forge: Forge) {82        // Given83        val motionEvent: MotionEvent = mock()84        val spyTest = spy(testedWrapper)85        val aBoolean = forge.aBool()86        whenever(mockCallback.dispatchTouchEvent(motionEvent)).thenReturn(aBoolean)87        doReturn(motionEvent).`when`(spyTest).copyEvent(motionEvent)88        // When89        val returnedValue = spyTest.dispatchTouchEvent(motionEvent)90        // Then91        assertThat(returnedValue).isEqualTo(aBoolean)92        verify(mockCallback).dispatchTouchEvent(motionEvent)93    }94    @Test95    fun `dispatchTouchEvent will pass a copy of the event to the gesture detector`() {96        // Given97        val motionEvent: MotionEvent = mock()98        val copyMotionEvent: MotionEvent = mock()99        val spyTest = spy(testedWrapper)100        doReturn(copyMotionEvent).`when`(spyTest).copyEvent(motionEvent)101        // When102        spyTest.dispatchTouchEvent(motionEvent)103        // Then104        verify(mockGestureDetector).onTouchEvent(copyMotionEvent)105        verify(copyMotionEvent).recycle()106    }107    @Test108    fun `menu item selection will trigger a Rum UserActionEvent`(forge: Forge) {109        // Given110        val returnValue = forge.aBool()111        val itemTitle = forge.aString()112        val featureId = forge.anInt()113        val itemId = forge.anInt()114        val itemResourceName = forge.aString()115        whenever(mockResources.getResourceEntryName(itemId)).thenReturn(itemResourceName)116        val menuItem: MenuItem = mock {117            whenever(it.itemId).thenReturn(itemId)118            whenever(it.title).thenReturn(itemTitle)119        }120        whenever(mockCallback.onMenuItemSelected(featureId, menuItem)).thenReturn(returnValue)121        // When122        assertThat(testedWrapper.onMenuItemSelected(featureId, menuItem)).isEqualTo(returnValue)123        // Then124        inOrder(mockCallback, mockRumMonitor) {125            verify(mockRumMonitor).addUserAction(126                eq(RumActionType.TAP),127                eq(targetName(menuItem, itemResourceName)),128                argThat {129                    val targetClassName = menuItem.javaClass.canonicalName130                    this[RumAttributes.ACTION_TARGET_CLASS_NAME] == targetClassName &&131                        this[RumAttributes.ACTION_TARGET_RESOURCE_ID] == itemResourceName &&132                        this[RumAttributes.ACTION_TARGET_TITLE] == itemTitle133                }134            )135            verify(mockCallback).onMenuItemSelected(featureId, menuItem)136        }137    }138    @Test139    fun `pressing back button will trigger specific user action event`(forge: Forge) {140        // Given141        val returnedValue = forge.aBool()142        whenever(mockCallback.dispatchKeyEvent(any())).thenReturn(returnedValue)143        val keyEvent = mockKeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BACK)144        // When145        assertThat(testedWrapper.dispatchKeyEvent(keyEvent)).isEqualTo(returnedValue)146        // Then147        inOrder(mockRumMonitor, mockCallback) {148            verify(mockRumMonitor).addUserAction(RumActionType.CUSTOM, "back", emptyMap())149            verify(mockCallback).dispatchKeyEvent(keyEvent)150        }151    }152    @Test153    fun `pressing back button will trigger user action event only on ACTION_UP`(forge: Forge) {154        // Given155        val returnedValue = forge.aBool()156        whenever(mockCallback.dispatchKeyEvent(any())).thenReturn(returnedValue)157        val keyEvent = mockKeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK)158        // When159        assertThat(testedWrapper.dispatchKeyEvent(keyEvent)).isEqualTo(returnedValue)160        // Then161        inOrder(mockRumMonitor, mockCallback) {162            verifyZeroInteractions(mockRumMonitor)163            verify(mockCallback).dispatchKeyEvent(keyEvent)164        }165    }166    @Test167    fun `pressing any other key except back button will do nothing`(forge: Forge) {168        // Given169        val returnedValue = forge.aBool()170        whenever(mockCallback.dispatchKeyEvent(any())).thenReturn(returnedValue)171        val keyCode = forge.anInt(min = 5)172        val keyEvent = mockKeyEvent(KeyEvent.ACTION_UP, keyCode)173        // When174        assertThat(testedWrapper.dispatchKeyEvent(keyEvent)).isEqualTo(returnedValue)175        // Then176        inOrder(mockRumMonitor, mockCallback) {177            verifyZeroInteractions(mockRumMonitor)178            verify(mockCallback).dispatchKeyEvent(keyEvent)179        }180    }181    // region Internal182    private fun mockKeyEvent(action: Int, keyCode: Int): KeyEvent {183        return mock {184            whenever(it.keyCode).thenReturn(keyCode)185            whenever(it.action).thenReturn(action)186        }187    }188    // endregion189}...

Full Screen

Full Screen

PowerMockitoTest.kt

Source:PowerMockitoTest.kt Github

copy

Full Screen

1package com.lilong.androidunittest2import com.nhaarman.mockitokotlin2.*3import org.junit.Before4import org.junit.Test5import org.junit.runner.RunWith6import org.mockito.ArgumentMatchers.*7import org.mockito.Mock8import org.powermock.api.mockito.PowerMockito9import org.powermock.core.classloader.annotations.PrepareForTest10import org.powermock.modules.junit4.PowerMockRunner11/**12 * 这里也不需要 MockitoAnnotations.initAnnotations,用了反而导致问题13 * [PowerMockRunner] 已经处理了注解14 */15@RunWith(PowerMockRunner::class)16@PrepareForTest(FCalculator::class)17class PowerMockitoTest {18    private val realCalculator = FCalculator()19    @Mock20    private lateinit var mockCalculator: FCalculator21    // 在使用 PowerMockRunner 时,无法使用 @Spy 注解22    @Before23    fun setUp(){24        PowerMockito.mockStatic(FCalculator.Companion::class.java)25    }26    @Test27    fun stubbing() {28        // 真实对象29        println(realCalculator.add(1, 2))   // 真实对象,return 330        // 规定 mock 规则,没在规则内的调用都返回默认值,这里是031        // 在规则内的调用,返回规则规定的值,这叫 stubbing32        whenever(mockCalculator.add(1, 2)).thenReturn(4)33        println(mockCalculator.add(1, 2))    // return 434        // 没有 stubbing,返回 035        println(mockCalculator.add(1, 3))    // return 036        // 有 stubbing37        whenever(mockCalculator.add(anyInt(), anyInt())).thenReturn(100)38        println(mockCalculator.add(7, 9)) // return 10039        println(mockCalculator.add(1, 2))  // return 100,覆盖了之前的 stubbing40    }41    @Test42    fun stubbingDoThrow() {43        whenever(mockCalculator.divide(anyFloat(), eq(1f))).doThrow(IllegalArgumentException())44        println(mockCalculator.divide(2f, 1f)) // throw IllegalArgumentException45    }46    @Test47    fun stubbingConsecutiveCallWithDifferentReturns() {48        // 注意 thenReturn 是连续调用的,如果中间有别的 whenever,会导致后面的 thenReturn 设置覆盖掉前面的49        whenever(mockCalculator.add(1, 2)).thenReturn(1).thenReturn(2)50        println(mockCalculator.add(1, 2))   // return 151        println(mockCalculator.add(1, 2))   // return 252    }53    @Test54    fun stubbingWithThenAnswer() {55        whenever(mockCalculator.add(anyInt(), anyInt())).thenAnswer {56            it.arguments[0] as Int - it.arguments[1] as Int57        }58        println(mockCalculator.add(1, 2)) // return -159    }60    @Test61    fun verify() {62        mockCalculator.add(1, 3)63        verify(mockCalculator).add(1, 3) // verify 会检测调用的方法次数,参数,任何一个不一致都会 fail64        mockCalculator.add(1, 2)65        mockCalculator.add(1, 2)66        verify(mockCalculator, times(2)).add(1, 2)67    }68    /**69     * 检测 mock 是否按照规定的顺序执行了方法70     * 只需写入关心的方法71     * */72    @Test73    fun verifyInOrder() {74        mockCalculator.add(1, 2)75        mockCalculator.add(1, 3)76        inOrder(mockCalculator) {77            verify(mockCalculator).add(1, 2)78            verify(mockCalculator).add(1, 3)79        }80    }81    @Test82    fun verifyNeverHappen() {83        mockCalculator.add(1, 3)84        verify(mockCalculator, never()).add(1, 2)85    }86    @Test87    fun verifyNoMoreInteractions() {88        mockCalculator.add(1, 2)89        verify(mockCalculator).add(1, 2)90        verifyNoMoreInteractions(mockCalculator)91    }92    @Test93    fun verifyPrivate(){94        mockCalculator.executeMinus(1, 2)95        PowerMockito.verifyPrivate(mockCalculator).invoke("minus", 1, 2) // fails96    }97    @Test98    fun spyTest() {99        // 注意这里要用 PowerMockito 的 spy,其它的不行100        val spiedCalculator = PowerMockito.spy(FCalculator())101        println(spiedCalculator.add(1, 2))  // return 3102        whenever(spiedCalculator.add(1, 2)).thenReturn(10)103        println(spiedCalculator.add(1, 2))  // return 10104        println(spiedCalculator.add(1, 5))  // return 6105    }106    @Test107    fun testDoAnswer(){108        whenever(mockCalculator.ignite()).doAnswer {109            println("a")110        }111        mockCalculator.ignite()112    }113    @Test114    fun testMockStatic(){115        whenever(FCalculator.staticMethod()).doAnswer {116            println("1")117        }118        FCalculator.staticMethod()119    }120}...

Full Screen

Full Screen

GetStateByIdUseCaseTest.kt

Source:GetStateByIdUseCaseTest.kt Github

copy

Full Screen

...78        spyList.add("two")79        Mockito.verify(spyList).add("one")80        Mockito.verify(spyList).add("two")81        //assertEquals(2, spyList.size)82        //objTest = SpyTest()83        val spyClass = Mockito.spy(SpyTest())84        //Mockito.`when`(objTest.doAnOperation()).thenReturn(3)85//        Mockito.doNothing().`when`(objTest).doAnOperation()86//        doReturn(3).`when`(objTest.doAnOperation())87//        assertEquals(3, objTest.doAnOperation())88    }89    @Captor90    lateinit var argumentCaptor: ArgumentCaptor<Int>91    @Captor92    lateinit var argumentString: ArgumentCaptor<String>93    @Mock94    lateinit var mockTest: IntestCap95    @Test96    fun captureString() {97        mockTest.acarayEl16esmyCumple("27 años")98        Mockito.verify(mockTest).acarayEl16esmyCumple(argumentString.capture())99        assertEquals("27 años", argumentString.value)100    }101    @Test102    fun captorTest() {103        //mockList.add(1)104        //mockList.add("one")105        //Mockito.verify(mockList).add(arg.capture())106        //argumentCaptor = ArgumentCaptor.forClass(SpyTest::class.java)107        mockTest.doSomething(1)108        Mockito.verify(mockTest).doSomething(argumentCaptor.capture())109        assertEquals(1, argumentCaptor.value)110        //mySpyTest.operationArgs(1)111        //Mockito.verify(mySpyTest).operationArgs(argumentCaptor.capture())112        //assertEquals(2, argumentCaptor.value)113//        val argumentList: ArgumentCaptor<ArrayList<String>> = ArgumentCaptor.forClass(ArrayList<String>)114//        nameList.add("joel")115//        Mockito.verify(nameList).add()116//117//        val argument: ArgumentCaptor<SpyTest> = ArgumentCaptor.forClass(SpyTest::class.java)118//        Mockito.verify(myCapTest).operationArgs(2)119//       // verify(objTest).doSomething(argument.capture())120//        assertEquals(3, argument.value.operationArgs(2))121    }122    @Mock123    var mockedList: ArrayList<Int> = arrayListOf()124    @Captor125    lateinit var argCaptor: ArgumentCaptor<Int>126    @Test127    fun whenUseCaptorAnnotation_thenTheSam() {128        mockedList.add(1)129        Mockito.verify(mockedList).add(argCaptor.capture())130        assertEquals(1, argCaptor.value)131    }...

Full Screen

Full Screen

DatadogGesturesTrackerTest.kt

Source:DatadogGesturesTrackerTest.kt Github

copy

Full Screen

1/*2 * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0.3 * This product includes software developed at Datadog (https://www.datadoghq.com/).4 * Copyright 2016-Present Datadog, Inc.5 */6package com.datadog.android.rum.internal.instrumentation.gestures7import android.app.Activity8import android.view.Window9import com.nhaarman.mockitokotlin2.any10import com.nhaarman.mockitokotlin2.doReturn11import com.nhaarman.mockitokotlin2.isA12import com.nhaarman.mockitokotlin2.mock13import com.nhaarman.mockitokotlin2.never14import com.nhaarman.mockitokotlin2.spy15import com.nhaarman.mockitokotlin2.verify16import com.nhaarman.mockitokotlin2.whenever17import org.junit.jupiter.api.BeforeEach18import org.junit.jupiter.api.Test19import org.junit.jupiter.api.extension.ExtendWith20import org.junit.jupiter.api.extension.Extensions21import org.mockito.Mock22import org.mockito.junit.jupiter.MockitoExtension23import org.mockito.junit.jupiter.MockitoSettings24import org.mockito.quality.Strictness25@Extensions(26    ExtendWith(MockitoExtension::class)27)28@MockitoSettings(strictness = Strictness.LENIENT)29internal class DatadogGesturesTrackerTest {30    lateinit var testedTracker: DatadogGesturesTracker31    @Mock32    lateinit var mockActivity: Activity33    @Mock34    lateinit var mockWindow: Window35    @Mock36    lateinit var mockGestureDetector: GesturesDetectorWrapper37    @BeforeEach38    fun `set up`() {39        testedTracker =40            DatadogGesturesTracker(emptyArray())41        whenever(mockActivity.window).thenReturn(mockWindow)42    }43    @Test44    fun `will start tracking the activity`() {45        // When46        val spyTest = spy(testedTracker)47        doReturn(mockGestureDetector)48            .whenever(spyTest)49            .generateGestureDetector(mockActivity, mockWindow)50        spyTest.startTracking(mockWindow, mockActivity)51        // Then52        verify(mockWindow).callback = isA<WindowCallbackWrapper>()53    }54    @Test55    fun `will stop tracking the activity`() {56        // Given57        whenever(mockWindow.callback)58            .thenReturn(59                WindowCallbackWrapper(60                    NoOpWindowCallback(),61                    mockGestureDetector62                )63            )64        // When65        testedTracker.stopTracking(mockWindow, mockActivity)66        // Then67        verify(mockWindow).callback = null68    }69    @Test70    fun `stop tracking the activity will restore the previous callback if was not null`() {71        // Given72        val previousCallback: Window.Callback = mock()73        whenever(mockWindow.callback)74            .thenReturn(75                WindowCallbackWrapper(76                    previousCallback,77                    mockGestureDetector78                )79            )80        // When81        testedTracker.stopTracking(mockWindow, mockActivity)82        // Then83        verify(mockWindow).callback = previousCallback84    }85    @Test86    fun `stop will do nothing if the activity was not tracked`() {87        // When88        testedTracker.stopTracking(mockWindow, mockActivity)89        // Then90        verify(mockWindow, never()).callback = any()91    }92    @Test93    fun `will not track an activity with no decor view`() {94        // Given95        whenever(mockWindow.decorView).thenReturn(null)96        // Then97        verify(mockWindow, never()).callback = any()98    }99}...

Full Screen

Full Screen

SpyTestCls.kt

Source:SpyTestCls.kt Github

copy

Full Screen

1package io.mockk.it2import io.mockk.every3import io.mockk.spyk4import kotlin.test.*5class SpyTest {6    @Test7    fun propertyInitialized() {8        val executed = arrayOf(false, false, false, false)9        val spyObj = spyk(SpyTestCls(executed))10        assertNotNull(spyObj.someReference)11    }12    @Test13    fun simpleSuperCall() {14        val executed = arrayOf(false, false, false, false)15        val spyObj = spyk(SpyTestCls(executed))16        every {17            spyObj.doSomething()18        } answers {19            callOriginal()20        }21        spyObj.doSomething()22        assertTrue(executed[0])23        assertTrue(executed[1])24        assertFalse(executed[2])25        assertFalse(executed[3])26    }27    @Test28    fun overrideCallOriginal() {29        val executed = arrayOf(false, false, false, false)30        val spyObj = spyk(SpyTestCls(executed))31        every {32            spyObj.computeSomething(1)33        } returns null34        assertNull(spyObj.computeSomething(1))35        assertFalse(executed[0])36        assertFalse(executed[1])37        assertFalse(executed[2])38        assertFalse(executed[3])39    }40    @Test41    fun secondSimpleSuperCall() {42        val executed = arrayOf(false, false, false, false)43        val spyObj = spyk(SpyTestCls(executed))44        every {45            spyObj.computeSomething(2)46        } answers { callOriginal()?.plus(4) }47        assertEquals(11, spyObj.computeSomething(2))48        assertFalse(executed[0])49        assertFalse(executed[1])50        assertTrue(executed[2])51        assertTrue(executed[3])52    }53    @Test54    fun notMockedCall() {55        val executed = arrayOf(false, false, false, false)56        val spyObj = spyk(SpyTestCls(executed))57        assertEquals(8, spyObj.computeSomething(3))58        assertFalse(executed[0])59        assertFalse(executed[1])60        assertTrue(executed[2])61        assertTrue(executed[3])62    }63    /**64     * See issue #9565     */66    @Test67    fun chainedCalls() {68        val mocking = spyk(ChainedCallsCls())69        every { mocking.bar(any()) } returns "FOO MOCKED"70        println(mocking.bar("hello"))71    }72    @Test73    fun chainedCalls2() {74        val mocking = spyk(ChainedCallsCls())75        every { mocking.bar2() } returns "FOO MOCKED"76        println(mocking.bar2())77    }78    class ChainedCallsCls {79        fun getInterface(list: List<Boolean>) = listOf(true)80        fun bar(t: String, list: List<Boolean> = getInterface(listOf(false))): String {81            return "FOO"82        }83        fun bar2(list: List<Boolean> = getInterface(listOf(false))): String {84            return "FOO"85        }86    }87    open class BaseTestCls(val someReference: String, val executed: Array<Boolean>) {88        open fun doSomething() {89            executed[0] = true90        }91        open fun computeSomething(a: Int): Int? {92            executed[2] = true93            return 2294        }95    }96    class SpyTestCls(executed: Array<Boolean>) : BaseTestCls("A spy", executed) {97        override fun doSomething() {98            executed[1] = true99            super.doSomething()100        }101        override fun computeSomething(a: Int): Int? {102            executed[3] = true103            super.computeSomething(a)104            return 5 + a105        }106    }107}...

Full Screen

Full Screen

LoginPresenterTest.kt

Source:LoginPresenterTest.kt Github

copy

Full Screen

1package com.lain.calculator.mockito2import org.junit.Assert3import org.junit.Assert.*4import org.junit.Before5import org.junit.Test6import org.junit.runner.RunWith7import org.mockito.Mock8import org.mockito.Mockito.*9import org.mockito.Spy10import org.mockito.junit.MockitoJUnitRunner11import java.lang.RuntimeException12import org.mockito.Mockito.`when` as wheen13@RunWith(MockitoJUnitRunner::class)14class LoginPresenterTest{15    @Mock16    private lateinit var view: Login.View17    @Mock18    private lateinit var model: Login.Model19    private lateinit var presenter: LoginPresenter20    @Before21    fun setup(){22        presenter = LoginPresenter(view)23    }24    @Test25    fun showShowErrorMessageWhenTheUserOrPasswordIsIncorrectTest(){26        wheen(view.userName()).thenReturn("Maria")27        wheen(view.password()).thenReturn("1273891237")28        presenter.validUser(view.userName(), view.password())29        30        verify(view).error()31    }32    @Test33    fun shouldCallUserValidWhenUserAndPasswordIsRightTest(){34        //Hace una llamada real al metodo35        wheen(view.userName()).thenReturn("andrea")36        wheen(view.password()).thenReturn("1234")37        assertEquals("andrea", view.userName())38        assertEquals("1234", view.password())39        presenter.validUser(40                user = view.userName(),41                password = view.password()42        )43        verify(view).userValid()44    }45    @Test46    fun shouldThrowingException(){47        wheen(view.userName()).thenThrow(RuntimeException::class.java)48        try {49            view.userName()50        }catch (runtTimeException: RuntimeException){51        }52    }53    @Test54    fun shouldCallUserValidWhenUserAndPasswordIsRightDoReturnTest(){55        //No hace una llamada real al metodo56        doReturn("andrea").`when`(view).userName()57        assertEquals("andrea", view.userName())58    }59    @Test60    fun shouldCallUserValidWhenUserAndPasswordIsRightTest2(){61        //Hace una llamada real al metodo62        wheen(view.userName()).thenReturn("andrea")63        wheen(view.password()).thenReturn("1234")64        assertEquals("andrea", view.userName())65        assertEquals("1234", view.password())66        presenter.validUser(67                user = view.userName(),68                password = view.password()69        )70        verify(view).userValid()71        verify(view, times(1)).userValid()72        verify(view, never()).userValid()73        //Pasa si se llama al menos 1 vez74        verify(view, atLeast(4)).userValid()75        //Pasa si se llama menos de 7 veces76        verify(view, atMost(7)).userValid()77        //Solo 1 vez78        verify(view, only()).userValid()79    }80    @Mock81    val mockList = mutableListOf<String>()82    @Spy83    val spyList = mutableListOf<String>()84    @Test85    fun spyTest(){86        spyList.add("one")87        spyList.add("two")88        verify(spyList).add("one")89        verify(spyList).add("two")90        assertEquals(2, spyList.size)91    }92    @Test93    fun mockTest(){94        mockList.add("one")95        mockList.add("two")96        verify(mockList).add("one")97        verify(mockList).add("two")98        assertEquals(2, mockList.size)99    }100}...

Full Screen

Full Screen

TestMyClass.kt

Source:TestMyClass.kt Github

copy

Full Screen

1import mymockito.MyClass2import org.junit.*3import org.junit.Assert.*4import org.junit.rules.ExpectedException5import org.mockito.ArgumentCaptor6import org.mockito.ArgumentMatchers7import org.mockito.Captor8import org.mockito.Mockito.*9import java.lang.IllegalArgumentException10import java.util.*11class TestMyClass {12    @Test13    fun testGetUnique()14    {15        val mock : MyClass = mock(MyClass::class.java)16        `when`(mock.getUniqueId()).thenReturn(43)17        assertEquals(43, mock.getUniqueId())18    }19    @Test20    fun testTwoValues()21    {22        val iter = mock(Iterator::class.java) as Iterator<String>23        `when`(iter.next()).thenReturn("Hello").thenReturn("World")24        val result = iter.next() + " " + iter.next()25        assertEquals(result, "Hello World")26    }27    @get:Rule28    var exceptionRule = ExpectedException.none()29    @Test30    fun testThrowAndCatch()31    {32        val mock  = mock(MyClass::class.java)33        `when`(mock.getUniqueId()).thenThrow(IllegalArgumentException("Typo"))34        exceptionRule.expect(IllegalArgumentException::class.java)35        exceptionRule.expectMessage("Typo")36        mock.getUniqueId()37    }38    @Test39    fun testOrderAndNumberOfTimes()40    {41        val mock = mock(MyClass::class.java)42        `when`(mock.getUniqueId()).thenReturn(43)43        val inOrder = inOrder(mock)44        mock.testing(12)45        mock.getUniqueId()46        mock.getUniqueId()47        verify(mock).testing(ArgumentMatchers.eq(12))48        verify(mock, times(2)).getUniqueId()49        verify(mock, atLeastOnce()).getUniqueId()50        verify(mock, never()).someMethod("123")51        verify(mock, atLeast(1)).getUniqueId()52        verify(mock, atMost(10)).getUniqueId()53        inOrder.verify(mock).testing(12)54        inOrder.verify(mock, times(2)).getUniqueId()55        verifyNoMoreInteractions(mock)56    }57    @Captor58    var stringCaptor = ArgumentCaptor.forClass(String::class.java)59    class MockitoHelper60    {61        fun <T> capture(captor: ArgumentCaptor<T>) : T = captor.capture()62    }63    @Test64    fun spyTest()65    {66        var list = LinkedList<String>()67        val spy = spy(list)68        spy.add("hello")69        verify(spy).add(MockitoHelper().capture(stringCaptor))70        assertTrue(stringCaptor.value == "hello")71    }72    @Before73    fun init()74    {75        println("init")76    }77    @After78    fun tearDown()79    {80        println("after")81    }82    companion object {83        @BeforeClass @JvmStatic84        fun beforeAll()85        {86            println("before all")87        }88        @AfterClass @JvmStatic89        fun afterAll()90        {91            println("after all")92        }93    }94}...

Full Screen

Full Screen

SpyTest.kt

Source:SpyTest.kt Github

copy

Full Screen

...3import mobx.core.spy4import org.assertj.core.api.Assertions.assertThat5import org.spekframework.spek2.Spek6import org.spekframework.spek2.style.specification.describe7object SpyTest : Spek({8    describe("spy test") {9        var spyPayload: Any? = null10        val disposable = spy {11            spyPayload = it12        }13        it("should receive payload from actions until disposed") {14            action("testPayload") {}15            assertThat(spyPayload).isEqualTo("testPayload")16            disposable.dispose()17            action("new test payload") {}18            assertThat(spyPayload).isEqualTo("testPayload")19        }20    }21})...

Full Screen

Full Screen

SpyTest

Using AI Code Generation

copy

Full Screen

1import test.SpyTest;2public class SpyTestUser {3public static void main(String[] args) {4SpyTest test = new SpyTest();5test.test();6}7}8package test;9public class SpyTest {10public void test() {11System.out.println("I am in test method");12}13}

Full Screen

Full Screen

SpyTest

Using AI Code Generation

copy

Full Screen

1import test.SpyTest;2import test.SpyTest;3import test.SpyTest;4public class SpyTest {5    private String name;6    private int id;7    private String codeName;8    private static int spyCount = 0;9    public Spy(int spyId, String spyName, String spyCodeName) {10        this.id = spyId;11        this.name = spyName;12        this.codeName = spyCodeName;13        spyCount++;14        System.out.println("Spy " + this.id + " : " + this.name + " has been created.");15        System.out.println("Code Number : " + this.codeName);16        System.out.println("There are " + spyCount + " spies in total.");17    }18    public void die() {19        spyCount--;20        System.out.println("Spy " + this.id + " : " + this.name + " has been eliminated.");21        System.out.println("There are " + spyCount + " spies in total.");22    }23    public void setCodeName(String newCodeName) {24        this.codeName = newCodeName;25        System.out.println("Spy " + this.id + " : " + this.name + " has a new codename.");26        System.out.println("New Code Name : " + this.codeName);27    }28    public static void main(String[] args) {29        Spy spy1 = new Spy(1, "James Bond", "007");30        Spy spy2 = new Spy(2, "Jason Bourne", "008");31        spy2.die();32        spy1.setCodeName("006");33    }34}

Full Screen

Full Screen

SpyTest

Using AI Code Generation

copy

Full Screen

1import test.SpyTest;2import test.SpyTest;3import test.SpyTest;4public class SpyTest {5    public static void main(String[] args) {6        Spy spy1 = new Spy(1);7        Spy spy2 = new Spy(2);8        Spy spy3 = new Spy(3);9        Spy spy4 = new Spy(4);10        Spy spy5 = new Spy(5);11        spy3.die();12        spy4.die();13        spy5.die();14    }15}16public class Spy {17    private int spyID;18    private static int spyCount = 0;19    public Spy(int spyID) {20        this.spyID = spyID;21        spyCount++;22        System.out.println("Spy " + this.spyID + " has been created.");23        System.out.println("There are " + spyCount + " spies.");24    }25    public void die() {26        System.out.println("Spy " + this.spyID + " has been detected and eliminated.");27        spyCount--;28        System.out.println("There are " + spyCount + " spies.");29    }30}

Full Screen

Full Screen

SpyTest

Using AI Code Generation

copy

Full Screen

1import java.util.*;2{3public static void main(String args[])4{5Scanner sc=new Scanner(System.in);6int n=sc.nextInt();7}8}

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run Mockito-kotlin automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful