gpt4 book ai didi

android - Android 上的单元测试和功能测试

转载 作者:太空狗 更新时间:2023-10-29 14:33:29 25 4
gpt4 key购买 nike

我创建了一个在多个 Activity 之间发送 Intent 的应用程序。在做了一些研究之后,我发现 ActivityUnitTestCase 类是为单元测试而设计的,而 ActivityInstrumentationTestCase2 是为功能测试而设计的。我了解 setUp()tearDown()testPreConditions() 等方法的使用。但是,我在尝试找出要在前面提到的类中创建哪些用户定义的测试 时遇到了一些困难。我知道有一些方法不能在某些类中调用。

更具体地说,如果我在 activity A 中并单击一个按钮,它会调用 startActivityForResult() 来启动 activity B .然后,我将 Intent 发送回 Activity A,该 Activity 在 onActivityResult() 方法中处理。我如何测试 onActivityResult() 中的实际结果是否等于预期结果?

我一直在广泛寻找有助于消除这种困惑的任何类型的示例。如果有人可以提供任何帮助,我将不胜感激。

最佳答案

对于这种类型的事情,您可能会通过实际测试 View Controller 对 View 所做的更改来间接测试发送到 onActivityResult 的结果。我们使用 ActivityInstrumentationTestCase2 的实例和 Robotium库(我强烈推荐)。

public class AdvancedSearchActivityTest extends ActivityInstrumentationTestCase2<AdvancedSearchActivity> {

private Solo solo;

@Override
protected void setUp() throws Exception {
super.setUp();
solo = new Solo(getInstrumentation(), getActivity());
}

public void testWhenActivityLoads_shouldShowCorrectWidgets() throws Exception {
assertTrue(solo.searchText("Location:"));
assertTrue(solo.searchText("Map Radius:"));
assertTrue(solo.searchButton("Search"));
}
}

ActivityInstrumentationTestCase2 仅指定要启动的基本 Activity ,因此您没有理由不能通过测试启动其他 Activity (模拟按钮单击等),然后从那些有结果的 Activity 中返回。我们已经在这里做过很多次了。不过,我会避免尝试让集成类型的测试实际尝试直接从 onActivityResult 获取结果。

关于android - Android 上的单元测试和功能测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4140776/

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