结合 Android 仪器测试和后端集成测试
Combine Android instrumentation tests and backend integration tests
我管理复杂的基于 Spring 的后端项目的单元测试和集成测试。测试应通过端到端测试进行扩展,以检查后端与 Android 客户端之间的交互。
一个简单的测试用例应该是 "When an event is triggered on the backend server, there should be a notification shown on the device".
我尝试的第一件事是实施 Android 仪器测试,但在后端交互方面遇到了困难。测试包括调用许多不同的服务和远程数据库操作,我觉得这种繁重的工作不应该发生在 Android 设备上。另一个问题是,让当前的 Spring 测试环境在 Android 环境中工作是一个巨大的 PITA。
我尝试的第二件事是将对 Android 的构建工具 gradle 的调用集成到我的测试逻辑中。这意味着我执行了一个命令行调用,如 ./gradlew app:connectedAndroidTest -Pandroid.testInstrumentationRunnerArguments.class=MyTestClass#notificationCheck
并检查了调用是否有肯定的执行结果。这产生了一些正确的测试结果,但感觉非常缓慢,因为命令行调用的执行时间相当长。
我使用 Android UI Automator 库进行跨应用程序测试。在 Android 设备上模拟进出后端的调用不是一个选项。
如何在我的普通集成测试中包含 Android 检测检查以创建端到端测试?对此有哪些技术解决方案?这种情况的解决方案是否已经存在?
示例测试可能如下所示:
class NotificationEventTest{
@Autowired
private MyService service;
private AndroidDevice device = AndroidDevice.getConnectedDevice();
@Test
public void notificationEventTest(){
service.createEvent();
boolean success = device.checkNotification(); //instrumentation
assertThat(success).isTrue();
}
}
我发现 Appium 符合我的要求。执行一些重量级后端测试并同时在设备上断言响应是完全可能的。
我管理复杂的基于 Spring 的后端项目的单元测试和集成测试。测试应通过端到端测试进行扩展,以检查后端与 Android 客户端之间的交互。
一个简单的测试用例应该是 "When an event is triggered on the backend server, there should be a notification shown on the device".
我尝试的第一件事是实施 Android 仪器测试,但在后端交互方面遇到了困难。测试包括调用许多不同的服务和远程数据库操作,我觉得这种繁重的工作不应该发生在 Android 设备上。另一个问题是,让当前的 Spring 测试环境在 Android 环境中工作是一个巨大的 PITA。
我尝试的第二件事是将对 Android 的构建工具 gradle 的调用集成到我的测试逻辑中。这意味着我执行了一个命令行调用,如 ./gradlew app:connectedAndroidTest -Pandroid.testInstrumentationRunnerArguments.class=MyTestClass#notificationCheck
并检查了调用是否有肯定的执行结果。这产生了一些正确的测试结果,但感觉非常缓慢,因为命令行调用的执行时间相当长。
我使用 Android UI Automator 库进行跨应用程序测试。在 Android 设备上模拟进出后端的调用不是一个选项。
如何在我的普通集成测试中包含 Android 检测检查以创建端到端测试?对此有哪些技术解决方案?这种情况的解决方案是否已经存在?
示例测试可能如下所示:
class NotificationEventTest{
@Autowired
private MyService service;
private AndroidDevice device = AndroidDevice.getConnectedDevice();
@Test
public void notificationEventTest(){
service.createEvent();
boolean success = device.checkNotification(); //instrumentation
assertThat(success).isTrue();
}
}
我发现 Appium 符合我的要求。执行一些重量级后端测试并同时在设备上断言响应是完全可能的。