ผลต่างระหว่างรุ่นของ "Sw-spec/unit-test-and-mock"
ไปยังการนำทาง
ไปยังการค้นหา
Jittat (คุย | มีส่วนร่วม) |
Jittat (คุย | มีส่วนร่วม) |
||
| (ไม่แสดง 1 รุ่นระหว่างกลางโดยผู้ใช้คนเดียวกัน) | |||
| แถว 1: | แถว 1: | ||
== Links == | == Links == | ||
| − | == Codes == | + | * MVP documents: TBA |
| + | * [http://site.mockito.org/ Mockito] | ||
| + | |||
| + | == Codes (Counter) == | ||
=== CounterView.kt === | === CounterView.kt === | ||
<pre> | <pre> | ||
| แถว 73: | แถว 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")
}
}