相关疑难解决方法(0)

Android - Independent Fragment UI测试工具

我一直在寻找一种方法来分别测试我的碎片的UI(即独立于其他碎片和活动),但我找不到办法.

特别是,假设我有片段A,片段B和片段C.进入片段C的唯一方法(应用方式)是首先通过片段A和片段B. 我正在寻找一种直接测试Fragment C的方法(可能通过模拟它的依赖关系,如果存在的话),而不必通过Fragment A和B.

到目前为止我调查的工具:

  • monkey:仅用于通过命令行生成伪随机事件.不是我想要的.

  • monkeyrunner:它可以运行Python程序将事件流发送到我的Android应用程序,但它不能直接使用这些脚本定位特定的Fragment.

  • Espresso:白盒测试工具.这接近我想要的,但它仍然需要在到达片段C之前通过片段A和B(即,您需要启动您的应用程序,然后测试将从那里运行).

  • UI Automator:黑盒测试工具.这也很接近,但同样,它需要在测试我想要的之前通过先前的片段(片段C).

有没有办法直接测试Fragmen的UI

android android-testing android-espresso android-uiautomator

19
推荐指数
1
解决办法
7124
查看次数

在(Espresso)Android工具测试中启动特定的导体控制器

我正在为使用Conductor编写的应用程序编写Espresso测试。我想为每个测试指定要启动哪个控制器,这样我就不需要Espresso从每个活动的开始Activity中单击应用程序。由于只有一个活动,并没有太多的SO或google一下指挥我能找到最接近的是这个问题吗?还是不可能?

我尝试将路由器设为静态并添加吸气剂,以尝试设置特定的根进行测试,但均未成功。

android.view.ViewRootImpl $ CalledFromWrongThreadException:只有创建视图层次结构的原始线程才能触摸其视图。

在MainActivity中:

public static Router getRouter() {
    return router;
}
Run Code Online (Sandbox Code Playgroud)

在仪器测试中:

@Rule
public ActivityTestRule<MainActivity> testRule = new ActivityTestRule<>(MainActivity.class);

@Before
public void setUp() {
    Router router = testRule.getActivity().getRouter();
    router.setRoot(RouterTransaction.with(new ControllerIwantToTest()));
}

@Test
public void titleIsDisplayed() {
    onView(withText("My Controllers Title")).check(matches(isDisplayed()));
}
Run Code Online (Sandbox Code Playgroud)

java testing android android-espresso conductor

4
推荐指数
1
解决办法
504
查看次数