添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

"未解决的引用。使用Kotlin和Robolectric的 "对"。

0 人关注

"Unresolved reference: Pair" using Kotlin with Robolectric

我试着把Robolectric添加到一个使用 android.util.Pair 的项目中,这样我就可以对相关的类进行单元测试。 这个项目是用java的,但单元测试都是用Kotlin的(到目前为止)。

When I try to run the unit tests, I get the error:

:app:createMockableJar UP-TO-DATE
e: E:\...\TestK.kt: (3, 21): Unresolved reference: Pair
e: E:\...\TestK.kt: (12, 17): Unresolved reference: Pair
:app:compileDebugUnitTestKotlin FAILED

我创建了一个简单的测试案例。

import android.util.Pair
import org.junit.Assert.assertEquals
import org.junit.runner.RunWith
import org.robolectric.RobolectricTestRunner
@RunWith(RobolectricTestRunner::class)
class TestK {
    @org.junit.Test
    fun testk() {
        val p = Pair.create("Foo", "Bar")
        assertEquals("Foo", p.first)
        assertEquals("Bar", p.second)

这就产生了错误,但如果我在java中创建同样的测试,它就能正常工作。

import android.util.Pair;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import static org.junit.Assert.assertEquals;
@RunWith(RobolectricTestRunner.class)
public class Test
    @org.junit.Test
    public void test()
        Pair<String, String> p = Pair.create("Foo", "Bar");
        assertEquals("Foo", p.first);
        assertEquals("Bar", p.second);

有什么想法,可能是什么问题?

我的gradle文件有以下部署。

apply plugin: 'com.android.application'
apply plugin: "kotlin-android"
... stuff ...
testImplementation 'junit:junit:4.12'
testImplementation "org.robolectric:robolectric:4.0.1"

而我使用的是Kotlin 1.3

5 个评论
你不能在Kotlin中使用Java Pair。
bj0
为什么不呢?我以为你可以使用Java中的任何东西。 我想测试的真正的(java)代码有返回 Pair<> 的函数。
你的代码能否解决这一行。 import android.util.Pair;
bj0
@Aaron 在Java中可以,但在Kotlin中不行,这就是我想弄明白的。 据我所知,Robolectric应该会提供这个类。
我可能是错的,但这可能与你的测试gradle有关,你有 apply plugin: 'com.android.library' apply plugin: 'kotlin-android'
android
kotlin
robolectric
bj0
bj0
发布于 2018-11-09
2 个回答
bj0
bj0
发布于 2021-04-08
0 人赞同

原来是我的项目中的 Pair.java 文件是空的,位于 android.util 。 它是我最初为 Pair 创建的一个java存根,当切换到Robolectric时,我注释了文件中的所有内容。

虽然这对java来说似乎很好,但显然对Kotlin来说还不够,它还在试图使用那个文件,我猜? 总之,在我删除了那个空文件之后,所有的东西都开始正常编译了。

Sanjay Rana
Sanjay Rana
发布于 2021-04-08
0 人赞同

在Kotlin中,我们使用UtilPair而不是Pair

just import like