gpt4 book ai didi

android - Android : Testing events? 中的 Robolectric

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

我已经使用 robolectric 编写了一些测试,现在我想做一些真正的测试类(class)。

我注意到的一件事是我无法测试 onCreate、onLocationChanged 等事件。

测试事件的标准做法是什么?

我是否应该提取事件中的代码并将它们放在一个方法中,事件将调用该方法,robolectro 也可以调用该方法,当然该方法需要是公共(public)的,对吗?

另外,如果我想在我的方法中测试通常是私有(private)变量的东西,那么我需要添加一个公共(public) getter,对吧?我可以从 robolectric 检查这个吗?

是否有更好的方法将数据公开给 robolectric?

最佳答案

在测试 onCreate 时,我让 robolectric 调用 onCreate,然后在 onCreate 之后测试 Activity 是否处于正确状态。这是一个例子:

@RunWith(RoboTestRunner.class)
public class DashboardActivityTest {

private DashboardActivity activity;

@Before
public void setUp() throws Exception {
activity = new DashboardActivity();
}

@After
public void tearDown() throws Exception {
}

@Test
public void testDashboardHasButtons() {
activity.onCreate(null);
Button btn1= (Button) activity.findViewById(R.id.btn1);
assertNotNull(btn1);
Button btn2= (Button) activity.findViewById(R.id.btn2);
assertNotNull(btn2);
}
}

测试私有(private)方法通常表明您的设计可以改进,而不是 Robolectric 特定问题。

请参阅此问题以进行大量讨论: How do I test a class that has private methods, fields or inner classes?

关于android - Android : Testing events? 中的 Robolectric,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11626120/

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