ผลต่างระหว่างรุ่นของ "Sw-spec/unit-test-and-mock"
ไปยังการนำทาง
ไปยังการค้นหา
Jittat (คุย | มีส่วนร่วม) |
Jittat (คุย | มีส่วนร่วม) |
||
แถว 4: | แถว 4: | ||
* [http://site.mockito.org/ Mockito] | * [http://site.mockito.org/ Mockito] | ||
− | == Codes == | + | == Codes (Counter) == |
=== CounterView.kt === | === CounterView.kt === | ||
<pre> | <pre> | ||
แถว 76: | แถว 76: | ||
inOrder.verify(view).setCounter(0) | inOrder.verify(view).setCounter(0) | ||
inOrder.verify(view).setCounter(1) | inOrder.verify(view).setCounter(1) | ||
+ | } | ||
+ | } | ||
+ | </pre> | ||
+ | |||
+ | == Codes (Calculator) == | ||
+ | === CalculatorView.kt === | ||
+ | <pre> | ||
+ | interface CalculatorView { | ||
+ | fun setDisplayValue(msg: String) | ||
+ | } | ||
+ | </pre> | ||
+ | |||
+ | === CalculatorPresenter.kt === | ||
+ | <pre> | ||
+ | class CalculatorPresenter(val view: CalculatorView) { | ||
+ | fun start() { | ||
+ | } | ||
+ | fun onDigitClicked(digit: Int) { | ||
+ | } | ||
+ | fun onClearClicked() { | ||
+ | } | ||
+ | } | ||
+ | </pre> | ||
+ | |||
+ | === CalculatorPresenterTest.kt === | ||
+ | <pre> | ||
+ | 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") | ||
} | } | ||
} | } | ||
</pre> | </pre> |
รุ่นแก้ไขปัจจุบันเมื่อ 04:59, 23 มีนาคม 2561
เนื้อหา
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") } }