Android Studio 3 beta 2 ClassNotFound在kotlin单元测试中
我正在使用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
是同一项目中另一个库的一部分,它通过实现项目(':domain')包含在gradle文件中
编辑
也可能值得一提的是, domain
模块是纯java的
编辑
找出问题是当库( domain
)有用kotlin编写的类的时候,那些类只会在单元测试中抛出NoClassDefFoundError。