- class DessertsHolder {
- private val counter = MutableLiveData<Int>()
- private val list = mutableListOf<String>()
- init {
- counter.value = 0
- }
- fun getCounter(): LiveData<Int> = counter
- fun add(item: String) {
- list.add(item)
- counter.value = list.size
- }
- fun remove(item: String) {
- list.remove(item)
- counter.value = list.size
- }
- fun clear() {
- list.clear()
- counter.value = 0
- }
- }
- class DessertsHolderTest {
- @Test
- fun test() {
- val holder = DessertsHolder()
- holder.add("Donuts")
- assertThat(holder.getCounter().value).isEqualTo(1)
- }
- }
そこで、まず AAC の core-testing ライブラリを追加します。
- dependencies {
- def lifecycle_version = "1.1.1"
- testImplementation "android.arch.core:core-testing:$lifecycle_version"
- }
- dependencies {
- def lifecycle_version = "2.0.0"
- testImplementation "androidx.arch.core:core-testing:$lifecycle_version"
- }
そして @get:Rule で rule に InstantTaskExecutorRule を指定します。このとき get: をつけないと rule が public ではないという ValidationError (ValidationError: The @Rule 'rule' must be public.)が起こるので注意しましょう。
- class DessertsHolderTest {
- @get:Rule
- val rule: TestRule = InstantTaskExecutorRule()
- @Test
- fun test() {
- ...
- }
- }