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。
- 尝试在Android Studio 2.2.1中运行新项目时出错
- 转换我现有的andorid工作室项目到kotlin?
- 如何在Android Studio中组织布局资源文件?
- Kotlin REPL与Android类unStub!编辑
- Android Studio 2.3.2和Kotlin 1.1.2-4 +数据绑定
- Kotlin未解决的引用linkedListOf
- 未解决的参考:kotlinx
- AndroidStudio / Kotlin – 未解决的参考:ReadWriteProperty – Kotlin版本1.0.0-beta-1038
- 升级到Android Studio 3.1后无法加载“com.android.builder.Version”类
- Android室数据库 – 未解决的参考@Entity和其他注释
- 将Kotlin添加到现有Java项目会打破Android Studio gradle消息错误
- Gradle同步失败:无法findorg.jetbrains.kotlin(无意使用Kotlin)
- Android Studio 3 Kotlin版本
- Android gradle构建在':app:mergeDebugResources'上突然失败,没有错误消息