gpt4 book ai didi

android - 如何在 Android 中模拟 Kotlin 的 kotlinx.android.synthetic View

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:10:07 25 4
gpt4 key购买 nike

我有一个用 Kotlin 编写的 fragment 。我使用

导入布局 View
import kotlinx.android.synthetic.main.my_fragment_layout.

在我的一种方法中,我设置了 TextView 的文本:

fun setViews() {
myTextView.text = "Hello"
// In Java I would have used:
// (getView().findViewById(R.id.myTextView)).setText("Hello");
}

在我的纯 JVM 单元测试中,我想使用 Mockito 测试此方法。例如,如果上面的方法是用 java 编写的,我可以这样做:

public void setViewsTest() {
// Mock dependencies
View view = Mockito.mock(View.class);
TextView myTextView = Mockito.mock(TextView.class);
when(fragment.getView()).thenReturn(view);
when(view.findViewById(R.id. myTextView)).thenReturn(myTextView);

// Call method
fragment.setViews();

// Verify the test
verify(myTextView).setText("Hello");
}

如何在使用 Kotlin 的 kotlinx.android.synthetic View 时执行类似的实现?

最佳答案

我认为 Robolectric是此类测试的更合适的工具。使用它,您可以更轻松地在 JVM 上测试具有 Android 依赖性的代码。

例如,您的测试看起来像这样:

@Test
fun `should set hello`() {
val fragment = YourFragment()

fragment.setViews()

assertEquals(fragment.myTextView.getText().toString(), "Hello");
}

关于android - 如何在 Android 中模拟 Kotlin 的 kotlinx.android.synthetic View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46955978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com