一个简单的测试...
import org.junit.Test
class KotlinUnitTest {
@Test
fun test() {
assert(true)
}
}
...导致以下结果......
Information:Gradle: Executing tasks: [:app:assembleDebug, :app:assembleDebugUnitTest]
Information:Kotlin: Kotlin JPS plugin is disabled
Information:Module "app" was fully rebuilt due to project configuration/dependencies changes
Information:06/12/2017 5:08 PM - Compilation completed with 3 errors and 0 warnings in 19s 962ms
Error:Gradle: java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
Error:Gradle: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
Error:Gradle: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
将android.enableAapt2=false
添加到 gradle.properties (或 gradle-wrapper.properties ),每次运行测试时,Android Studio都会无限期停止。
这很奇怪,因为我能够......
但是,无论出于何种原因,我无法在Kotlin进行测试
答案 0 :(得分:4)
我在运行kotlin测试时遇到了无意义的AAPT2错误。问题的根源在于Android Studio为Kotlin中的测试生成错误的运行配置。我不确定是什么导致了这个错误,因为它看起来不会发生在每个人身上。
通过命令行运行单元测试没有问题。
但是如果我尝试通过单击侧面注释按钮来运行测试,我收到了编译错误。
BTW:如果您尝试编辑生成的配置,那么运气不好,因为配置列表中根本没有列出该配置。
答案 1 :(得分:2)
我遇到了同样的问题。一个简单的测试:
@RunWith(RobolectricTestRunner::class)
@Config(constants = BuildConfig::class)
class MainActivityTest {
private lateinit var activityController: ActivityController<MainActivity>
@Before
@Throws(Exception::class)
fun setUp() {
activityController = Robolectric.buildActivity(MainActivity::class.java)
activityController.create().start().resume()
}
@Test
@Throws(Exception::class)
fun testNotBeNull() {
assertNotNull(activityController.get())
}
}
更新到最新的Kotlin版本到1.1.60并且Gradle到3.0.1解决它。