This slide describes an internal community on software engineering at Hitachi corporate group. Originally revealed at XP祭り2019 - conference on eXtreme Programming in Japan.
12. Copyright(C) 2019 Yahoo Japan Corporation.All Rights Reserved.
fun getHello():String{
return "Hello"
}
13. Copyright(C) 2019 Yahoo Japan Corporation.All Rights Reserved.
@Test
fun getHello_Helloを返す() {
val result = getHello()
assertEquals("Hello", result)
}
23. Copyright(C) 2019 Yahoo Japan Corporation.All Rights Reserved.
失敗するテストを書く
Copyright(C) 2019 Yahoo Japan Corporation.All Rights Reserved.
1 三つのフェーズ
24. Copyright(C) 2019 Yahoo Japan Corporation.All Rights Reserved.
テストを通すコードを書く
Copyright(C) 2019 Yahoo Japan Corporation.All Rights Reserved.
1 三つのフェーズ
25. Copyright(C) 2019 Yahoo Japan Corporation.All Rights Reserved.
リファクタリングする
Copyright(C) 2019 Yahoo Japan Corporation.All Rights Reserved.
1 三つのフェーズ
87. Copyright(C) 2019 Yahoo Japan Corporation.All Rights Reserved.
class HogeViewModel(
fooRepository: FooRepository,
baaService: BaaService
) : ViewModel() {
}
HogeViewModel.kt
88. Copyright(C) 2019 Yahoo Japan Corporation.All Rights Reserved.
val subject = HogeMenuViewModel(
fooRepositoryMock,
baaServiceMock)
HogeViewModelTest.kt
89. Copyright(C) 2019 Yahoo Japan Corporation.All Rights Reserved.
View以外が
Androidに依存しすぎてないか
Android TDD
90. Copyright(C) 2019 Yahoo Japan Corporation.All Rights Reserved.
1.ロジックとUIの分離
2.依存を注入する
3.Androidへの依存
Android TDD
91. Copyright(C) 2019 Yahoo Japan Corporation.All Rights Reserved.
Q.
LiveDataが絡んできたら?
Android TDD
92. Copyright(C) 2019 Yahoo Japan Corporation.All Rights Reserved.
@get:Rule
var taskExecutorRule = InstantTaskExecutorRule()
93. Copyright(C) 2019 Yahoo Japan Corporation.All Rights Reserved.
@Mock
lateinit var helloObserverMock: Observer<String>
94. Copyright(C) 2019 Yahoo Japan Corporation.All Rights Reserved.
@Test
fun getHello_helloを通知する() {
// arrange
subjectViewModel.hogeLiveData.observeForever(helloObservableMock)
// act
subjectViewModel.getHello()
// assert
verify(hogeObservableMock).onChanged("hello")
}
95. Copyright(C) 2019 Yahoo Japan Corporation.All Rights Reserved.
Q.
RxJavaが絡んできたら?
Android TDD
96. Copyright(C) 2019 Yahoo Japan Corporation.All Rights Reserved.
@Before
fun setUp() {
RxAndroidPlugins.setMainThreadSchedulerHandler { Schedulers.trampoline() }
RxJavaPlugins.setIoSchedulerHandler { Schedulers.trampoline() }
}
97. Copyright(C) 2019 Yahoo Japan Corporation.All Rights Reserved.
@After
fun tearDown() {
RxAndroidPlugins.reset()
RxJavaPlugins.reset()
}