Sw-spec/unit-test-and-mock
รุ่นแก้ไขเมื่อ 04:59, 23 มีนาคม 2561 โดย Jittat (คุย | มีส่วนร่วม)
เนื้อหา
Links
- MVP documents: TBA
- Mockito
Codes (Counter)
CounterView.kt
interface CounterView { fun setCounter(value: Int) }
CounterPresenter.kt
class CounterPresenter(val view: CounterView) { var counter: Int = 0 fun onPlusButtonClicked() { counter++ updateCounterInView() } fun onMinusButtonClicked() { counter-- updateCounterInView() } fun onResetButtonClicked() { reset() } fun start() { reset() } private fun reset() { counter = 0 updateCounterInView() } private fun updateCounterInView() { view.setCounter(counter) } }
CounterPresenterTest.kt
import org.junit.Before import org.junit.Test import org.mockito.Mockito.* /** * Created by jittat on 23/3/2561. */ class CounterPresenterTest { lateinit var view: CounterView lateinit var presenter: CounterPresenter @Before fun init() { view = mock(CounterView::class.java) presenter = CounterPresenter(view) } @Test fun testResetCounter() { presenter.start() verify(view).setCounter(0) } @Test fun testAddCounter() { presenter.start() presenter.onPlusButtonClicked() val inOrder = inOrder(view) inOrder.verify(view).setCounter(0) inOrder.verify(view).setCounter(1) } }
Codes (Calculator)
CalculatorView.kt
interface CalculatorView { fun setDisplayValue(msg: String) }
CalculatorPresenter.kt
class CalculatorPresenter(val view: CalculatorView) { fun start() { } fun onDigitClicked(digit: Int) { } fun onClearClicked() { } }
CalculatorPresenterTest.kt
import org.junit.Before import org.junit.Test import org.mockito.Mockito.mock import org.mockito.Mockito.verify class CalculatorPresenterTest { lateinit var view: CalculatorView lateinit var presenter: CalculatorPresenter @Before fun init() { view = mock(CalculatorView::class.java) presenter = CalculatorPresenter(view) } @Test fun testStart() { presenter.start() verify(view).setDisplayValue("0") } }