我为一个复杂的基于Spring的后端项目管理单元测试和集成测试。测试应该通过端到端测试进行扩展,该测试检查后端和Android客户端之间的交互。
一个简单的测试用例“当在后端服务器上触发事件时,应该会在设备上显示通知”。
我尝试的第一件事是实施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();
}
}