在Kotlin单元测试中,Android Studio 3 beta 2 ClassNotFound

时间:2017-08-15 21:11:12

标签: android-studio kotlin android-studio-3.0

我正在使用Android Studio 3.0 beta 2,将现有项目转换为gradle插件3.0.0-beta2

当我尝试运行用kotlin编写的现有单元测试时,我得到了java.lang.NoClassDefFoundError:com / other / domain / CollectionItem'

测试本身非常简单:

import org.junit.Test

import org.junit.Assert.*

class CollectionViewModelTest {
    @Test
    fun getItemsWithManyItemsWillReturnCollectionItemViewModels() {
        val collectionItems = listOf(CollectionItem(42, "Item1", CollectionItemType.COLLECTION, ""), CollectionItem(43, "Item2", CollectionItemType.COLLECTION, ""), CollectionItem(44, "Item3", CollectionItemType.COLLECTION, ""))
        val collection = Collection(45, "Home", "Home collection", collectionItems, 42)
        val collectionViewModel = CollectionViewModel(collection)

        assertTrue(collectionViewModel.items.first().isFirst)
        assertFalse(collectionViewModel.items.first().isLast)

        assertFalse(collectionViewModel.items[1].isFirst)
        assertFalse(collectionViewModel.items[1].isLast)

        assertTrue(collectionViewModel.items.last().isLast)
        assertFalse(collectionViewModel.items.last().isFirst)
    }
}

当我使用./gradlew

从终端运行它时,它可以正常工作

为什么会发生这种情况的任何想法?

修改

这似乎只有在测试需要来自其他库项目的类时才会发生。

在这种情况下,CollectionItem是同一项目中另一个库的一部分,它通过实施项目包含在gradle文件中(':domain')

修改

值得一提的是domain模块是纯java

修改

问题是当库(domain)具有用kotlin编写的类时,这些类将仅在单元测试中抛出NoClassDefFoundError。

0 个答案:

没有答案