5/30 수업

hyunji·2023년 5월 30일

안드로이드 TDD

Given-When-Then

  • 만일 조건이 여러개라면 given만 쓰는 것이 아니라 And도 같이 써주면 좋다

Gherkin 문법

  • 쇼핑 장바구니 앱을 TDD 한다고 가정
  • 먼저 기능 목록 작성

기능 목록

  • 홈 화면에 상품이 노출된다.
  Given 상품을 받아올 수 있다.
  When 상품을 받아오라는 요청을 보낸다.
  Then 상품 목록이 노출된다.
  • 상품을 장바구니에 추가할 수 있다
Given 상품을 장바구니에 추가할 수 있는 상태다.
When 장바구니 상품이 담겼다는 알림이 뜬다.
Then 장바구니 상품이 담겼다는 알림이 뜬다.
And 장바구니 상품 수가 증가한다.
And 장바구니 상품 수가 업데이트 된다.
  • 상품 상세를 확인할 수 있다.
Given
When 상품 상세 확인 요청을 보낸다.
Then 상품 상세가 노출된다,

MainPresenterTest

private lateinit var presenter: MainContract.Presenter
private lateinit var view: MAinContract.View
private lateinit var repository: ProductRepository

@Before
fun setUp() {
	view = mockk()
	presenter = MainPresenter(view, repository)
}

@Test
fun `홈 화면에 상품이 노출된다.` () {
	// Given 상품을 받아올 수 있다.
    // every { view.showProducts() } just Runs
    vavl products = ProductFixture.products
    justRun { view.showProducts(ProductFixture.products) }
    every { repository.fetchProducts() } returns ProductFixture.products
    
    // When 상품을 받아오라는 요청을 보낸다.
    presenter.fetchProducts()
    
    // Then 상품 목록이 노출된다.
    verifyc { view.showProducts(ProductFixture.products) }
} 

ProductFixture

object ProductFixture {
	val prdducts = listOf(
    	Product(
        	id = 4934,
            name = "as",
            price = 1200,
            imageUrl = "",
        )
    )
}
  • TDD를 할 땐 인터페이스를 통해 실질적인 구현이 되지 않아도 행동을 정의할 수 있음
  • 따라서 미리 정의해 놓는 것이 좋다

테스트 역할

  • 가장 큰 역할은 문서화 역할
  • 요구사항 검증 역할

인수 테스트

  • 가장 첫 번째 큰 단계는 기능목록 만들기임을 명심해라!!!!

0개의 댓글