云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

金山云_在线文件存储_便宜的

小七 141 0

数据库软件_如何选择_如何进行数据标注

如果你有一个通过HTTP与服务器通信的移动应用程序,那么你(希望)有测试来确保这种通信按预期工作。这通常涉及到在测试中提供固定的响应,并分别针对iOS和Android进行测试。很烦人,对吧?您在多个平台上有效地重复工作,大数据视频,而且响应的静态特性使得测试导致数据在后端更新的请求变得困难。谢天谢地,还有更好的办法。在对讲机上,开心返利,我们通过在Go中重新创建服务器逻辑并将其嵌入iOS和Android应用程序中,对这一点进行了改进。老办法?以前我们有两个解决方案来提供这些服务器响应。Android:我们有一个模拟HTTP客户端返回静态JSON,这是在我们的测试代码中定义的。这是典型的后端数据更新很难测试的问题。一个要求在对话中添加四条新信息的测试需要五条固定的回答。我们有一个节点.js它模拟了我们的服务器逻辑,我们在本地运行它,与我们正在测试的iOS模拟器在同一台机器上运行。这使我们能够轻松地测试数据的更新,但这意味着测试环境需要运行外部程序的能力。这使我们无法使用远程测试服务,如Firebase测试实验室和Xamarin测试云。我们几乎要听天由命地使用节点.js服务器也在Android上,但我们决定调查其他选项,并发现了gomobile,这是一个实验性的Go工具,它使得在Android和iOS应用程序中使用Go代码变得更加容易。我们决定尝试使用这个工具让我们的应用程序与运行在同一台设备上的goweb服务器通信。新方法?第一部分是在Go中实现服务器逻辑。这实际上比真正的后端实现简单得多,因为我们不需要担心扩展、持久性等问题,它只需要返回与我们的API在生产中所做的相同的HTTP响应。我们使用Mux路由请求,并依赖Go的内置JSON支持来创建和封送我们的模型对象。common Speakeasy包定义了一个服务器,它可以使用一个引擎来决定如何处理请求。func(服务器*服务器)Start(){服务器.引擎.安装程序(服务器)日志。致命(http.listendserve(":3000",服务器。路由器))}func(引擎*示例引擎)设置(服务器*speakeasy服务器) {经办人:=发动机.包装机(发动机.通道响应)服务器.Router.HandleFunc("/channels",handler).Methods("GET")}func(引擎*采样引擎)信道响应(whttp.ResponseWriter,右*http.请求) {json.NewEncoder(w) .Encode(信道响应{engine.AppState.ChannelNameList()})}第二部分是在应用程序中嵌入服务器代码。您可以使用Speakeasy工具来实现这一点,它将为Android生成AAR文件,并为iOS生成一个框架。在我们的应用程序中,国内免费云服务器,我们通过内部Maven和Cocoapods repos来分发这些文件,每日返利,以便于集成和版本控制。在你的应用中包含这些之后,你可以通过Android中生成的JNI方法和iOS中的C/Objective-C方法访问Go代码。// 扬声器AsyApplication.java服务器引擎=后端.newEngine();最终服务器扬声器AsyServer=Speakeasy.newServer(服务器引擎);线程服务器线程=新线程(new Runnable(){@重写public void run(){扬声器asyserver.start();}},"SpeakeasyServer");服务器线程.start();这对我们有多大帮助我们已经看到了使用它的许多好处:对模拟服务器逻辑的任何更改只需在Android和iOS之间完成一次,将工作量减半!测试更改所做的工作越少,就越有可能更新测试并编写新的测试。除了将其用于我们的httpapi之外,我们还能够将其用于基于WebSockets的实时API。这使我们能够轻松地模拟事件,如所见状态或为消息键入指示符。该应用程序是完全独立的,因此您的测试可以在任何设备或模拟器上运行,无论是否有互联网连接。您甚至可以将按钮添加到调试生成中,以触发服务器的推送事件。建立一个沙盒版本的应用程序是难以置信的容易。您可以在应用程序中添加按钮,将数据从服务器发送到客户端(例如,通过WebSockets),使测试实时通信更加简单。当在一个平台上工作的开发人员对服务器逻辑进行更改时,在其他平台上工作的开发人员可以清楚地看到他们的测试需要更新。如果他们没有,那么测试覆盖率就会有差距我们正在研究一些方法来检查您的模拟实现的行为是否与实际服务器的行为完全一致。如果他们表现不同,那么你的测试就不会很有用了?如何使用它Github上提供Speakeasy。在回购中,你会发现一个示例Android应用程序和设置脚本。在应用程序中使用它很简单:快跑去拿github.com/interco/speakeasy/cmd/speakeasy运行$GOPATH/src/github.com/interco/speakeasy/setup.sh设置所需的所有依赖项使用实现扬声器引擎接口运行speakeasy build{your package path}将服务器作为依赖项添加到应用程序中在应用程序中创建一个新的引擎对象,用它创建一个服务器,人工智能网络,然后在后台线程上启动服务器在过去的几个月里,我们发现Speakeasy真的很有用,你也会的。如果你有任何问题,给我写信,或者在5月4日都柏林的对讲机办公室见面会上问我一个问题。