Android 本地测试与仪表测试

2024-07-01

我正在尝试检查我的 API 在单元测试中是否可用,以确保它响应 200。

现在,我的问题是我不太确定何时使用本地测试当我必须使用时Android 仪器测试。我知道我必须使用 Instrumented Tests 进行 UI 测试,但如何测试端点?

我使用 Retrofit2 进行通信。并尝试通过本地测试以两种方式测试端点。

示例1(同步,不起作用)

public class EndpointTest {

    EndpointApi api;
    SimpleInjection simpleInjection;

    @Before
    public void setUp() {
        simpleInjection = new SimpleInjection();
        api = simpleInjection.getEndpointApi();
    }

    @Test
    public void endpoint_1_isAvailable() {
        Call<ApiResponse> rootCall = api.getRoot();
        try {
            int reponseCode = rootCall.execute().code();
            Assert.assertEquals(200, reponseCode);

        } catch (IOException e) {
            Assert.fail();
        }
    }         
}

示例 2(异步,确实有效)

public class EndpointTest {

    EndpointApi api;
    SimpleInjection simpleInjection;

    @Before
    public void setUp() {
        simpleInjection = new SimpleInjection();
        api = simpleInjection.getEndpointApi();
    }

    @Test
    public void endpoint_2_isAvailable() {
    Call<ApiResponse> rootCall = api.getRoot();

        rootCall.enqueue(new Callback<ApiResponse>() {
            @Override
            public void onResponse(Call<ApiResponse> call, Response<ApiResponse> response) {
                Assert.assertEquals(200, response.code());
            }

            @Override
            public void onFailure(Call<ApiResponse> call, Throwable t) {
                Assert.fail();
            }
        });
    }         
}

我必须使用 Android Instrumentation Test 进行异步模式吗?


决定是在开发机器上的本地 JVM 还是在 Android 设备/模拟器上运行测试并不取决于您的代码是否同步。通常您只想在本地运行单元测试,因为它速度更快并且允许您使用 TDD。您的测试执行网络请求,因此它们不是单元测试,因为它们依赖于服务器 - 它们是集成测试。最好在 Android 设备上运行集成测试以获得更好的反馈。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 本地测试与仪表测试 的相关文章

  • 如何让 Meteor Cordova 应用程序允许访问域

    我刚刚做了流星更新 现在有版本 流星1 0 4 科尔多瓦4 2 0 我最近还使用 mup deploy 将我的服务器移动到数字海洋 我现在发现 虽然桌面和移动网站运行良好 但在 Android 移动应用程序中 图像不再加载 这些图像是公共
  • 不在默认的 src/test/java 文件夹中运行 Maven 测试

    我有一个项目包含pom xml还有一些JUnit测试 两个都pom xml和单元测试是正确的 但问题是测试不在 src test java 文件夹中 我无法使用此文件夹 是否可以告诉maven从另一个源文件夹 也在这个项目中 执行测试 将此
  • android下拉刷新列表视图出错

    我正在使用功能下拉来刷新library https github com chrisbanes Android PullToRefresh克里斯班斯的 但是当我尝试在我的 xml 文件中导入这个小部件时 它向我显示以下错误 请帮助我如何解决
  • PerformException:执行“单击”时出错

    当我运行 android espresso 测试时出现错误 com google android apps common testing ui espresso PerformException 在视图 id 为 上执行 单击 时出错 我的
  • 无法解析“:app@debug/compileClasspath”的依赖关系:无法解析

    新安装的安卓工作室3 1 3在创建新项目并第一次编译时出现奇怪的依赖关系错误 一个相似的question https stackoverflow com questions 46949622 android studio 3 0 unabl
  • 片段替换现有片段

    我有 MainActivity 它包含 ListFragment 和框架布局 我可以在项目单击时更改列表上的片段 我在更换现有产品时遇到问题Fragment1与新的Fragment2 单击按钮时Fragment1 Fragment2应该取代
  • 从 Android 上的 .net Web 服务获取列表

    我有 net Web 服务 我想在 android 上使用它 这个网络服务的方法返回List Of String 但我在android上没有得到响应 我能做些什么 这是代码 我已经研究了 3 天 但还没有找到任何解决方案 简而言之 我需要来
  • 如何检查设备是否可以通过有效的 WiFi 连接访问互联网?

    我指的是设备已连接到接入点但由于某种原因被阻止使用此 AP 访问互联网的情况 检查wifi是否启用 WifiManager wfManager WifiManager getSystemService Context WIFI SERVIC
  • Android Fragment 后台事务

    我正在开发一个带有片段的应用程序 它有一个 JavaScript 接口 在主 Activity 中调用 并具有片段替换逻辑 当应用程序位于前台时 一切正常 但当应用程序位于后台时 片段事务替换不起作用 当我返回应用程序时 我仍然看到旧片段
  • 从处理程序取消 AsyncTask 及其进度条

    我想取消几秒钟后向服务器发送数据的 AsyncTask 我已经设置了 AsyncTask 和处 理程序 但进度对话框仍然旋转 我怎样才能尽快干净地停止AsyncTask 这就是我到目前为止所拥有的 提前致谢 private class As
  • Android UserManager.isUserAGoat() 的正确用例?

    想要改进这篇文章吗 提供此问题的详细答案 包括引用和解释为什么你的答案是正确的 不够详细的答案可能会被编辑或删除 我正在查看 中引入的新 API安卓4 2 http en wikipedia org wiki Android version
  • 批处理脚本 - 如果存在 ./sdcard/file.any 使用 adb

    我想检查我的 Android 设备上是否存在文件 如果不存在 则推送它 使用 adb 批量执行此操作的语法是什么 就像是 if exist sdcard file any do echo exists else adb push file
  • android 图像被文本包裹

    我想将图像插入文本中 例如 我想显示这样的文本 要编辑图片 您应该单击 图片 按钮 其中 image 是真实图像 例如 ImageView 你可以试试这个 不知道这是否是你的需要 setContentView R layout main T
  • 当 error.networkResponse 为 null 时 Android Volley 中的 Http 状态代码

    我在 Android 平台上使用 Google Volley 我遇到的问题是error参数输入onErrorResponse返回 nullnetworkResponse对于我正在使用的 RESTful API 我需要确定通常以 401 SC
  • 在单元测试用例中未调用 AsyncTask onPostExecute()

    我看过很多与此相关的帖子 但似乎没有一个与我遇到的问题相同 GetBusinessRulesTask 扩展了 AsyncTask 当我在单元测试用例中执行此操作时 onPostExecute 永远不会被调用 但是 如果我使用真正的客户端代码
  • 将片段添加到对话框

    我想向对话框添加一个片段 它可以是 DialogFragment 或常规对话框 我怎么做 这是我的 DialogFragment public class MyDialogFragment extends DialogFragment pu
  • EditText“maxLines”属性不起作用

    我有一个多行 EditText 用户可以在其中输入长句子 这就是我想要的 高度为 6 行的 EditText 从第一行到第五行 我希望 EditText 的 IME 操作按钮具有 Enter 转到新行 按钮 在第六 最后 行 它应该更改为
  • 如何在Android中启用接近传感器

    我已在代码中成功配置了距离计 现在我想以编程方式关闭和打开屏幕 传感器代码工作正常 并且也调用了以下方法 Override public void onSensorChanged SensorEvent event TODO Auto ge
  • 如何开玩笑地使用 --changedSince 和 --onlyChanged ?

    我想用改变自 https jestjs io docs en cli html changedsince and 仅更改 https jestjs io docs en cli html onlychanged开玩笑的标志 我更改了很多测试
  • 在这种情况下是否违反了 Google Play 开发者政策? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想通过 Android 应用程序赚一些钱 但我面临一个大问题 Google 在 Google Play 上不支持我所在的国家 地区 适用

随机推荐

  • Spring CSRF 代币生命周期

    我正在使用 Spring security 实现 CSRF 保护doc http docs spring io spring security site docs current reference htmlsingle csrf 我的一个
  • 外键约束的形成不正确 - java-mysql

    mysql的问题是什么 我不知道错误是什么 因为我之前没有使用过外键 String clientes CREATE TABLE clientes ID INTEGER NOT NULL AUTO INCREMENT CUENTA INTEG
  • APK 大小比预期大 - android studio

    我的项目内容大小是这样的 主要项目 来源和资产大小 513KB 模块 1 来源和资源大小 135KB 模块 2 来源和资源大小 80KB apk 签名 调试 大小为 4 87MB 也尝试过 ProGuard 没有任何改变 我不明白这是为什么
  • 最接近的可整除整数

    Example int a 254 int b 25 int c closest integer to a that is divisible by b 我怎样才能找到整数c 该示例的结果是c 250 有两种情况需要考虑 小于或等于的最接近
  • Facebook 多好友选择器 + 新的 javascript API = 坏了?

    我正在使用 fb serverfbml 标签在 IFrame 内呈现多好友选择器 我正在使用新的 javascript API 我一整天都在努力让它发挥作用 当我点击下划线的 选定 链接 按选定的朋友进行过滤 时 整个页面都会刷新 选定的朋
  • Ionic2 圆形分段按钮

    有谁知道如何将分段按钮的 css 从方形更改为圆形 我尝试使用正常css http codeitdown com css round buttons 但当 ionic2 尝试将按钮转换为打开时 情况变得很奇怪segment activate
  • 如何确定 C 代码是为 Android/NDK 还是 iOS 编译的

    我在 iOS 应用程序和 Android 应用程序中重用旧版 C 库 我想自定义一些宏定义 例如用于日志记录 是否有标准定义来检查 使用 ifdef 代码是否是针对 iOS 或 Android NDK 编译的 ANDROID or ANDR
  • 如何在 WPF 中获取 Windows 用户名

    我想在我的 WPF 应用程序中显示用户名 它应该从哪里获取当前登录用户的用户名 所以我的问题是我们如何从 WPF 应用程序获取 Windows 登录用户的用户名 System Security Principal WindowsIdenti
  • 如何将一个 XML 文件“包含”到另一个 XML 文件中?

    我有一个 XML 架构 例如
  • 调整 Fabricjs 矩形的大小以保持边框大小

    我想调整 Fabricjs 矩形的大小而不是缩放它 但在拖动调整大小手柄时我看到了奇怪的行为 边界开始消失或重复 我已经尝试过fabricjs的稳定版本1 7 19和beta 2 0 0 这是我正在使用的代码的本质 canvas on ob
  • Swift - 在自定义单元格中添加长按手势识别器

    因此 我的表格视图中的单元格有一个自定义单元格类和一个 xib 文件 并且我想向自定义单元格添加长按识别功能 我尝试将长按识别器拖放到 xib 文件中的单元格中 使文件的所有者成为手势的委托 然后将其从文档大纲 拖放 到自定义类 swift
  • 引用可能被破坏的静态对象

    假设我有以下代码 一些东西 hpp pragma once class Something public static Something get private Something 一些东西 cpp include Something h
  • 从 FFT 获取 RMS

    我获得了一组数据电压 我想从之前应用于该数据的 FFT 中获取 RMS 值 我已经看到 时域中的 RMS 应等于 Parseval 定理中的 RMS fft sqrt nFFT 但给了我不同的结果 我正在使用这些功能 1 快速傅里叶变换 p
  • WebStorm 调试 create-react-native-app

    我应该设置什么Run Debug Configuration在 WebStorm 中调试由以下人员创建的应用程序创建反应本机应用程序 https github com react community create react native
  • 如何在不使用 num2word 库的情况下将数字转换为单词?

    我需要将 1 99 之间的数字转换成单词 这是我到目前为止得到的 num2words1 1 One 2 Two 3 Three 4 Four 5 Five 6 Six 7 Seven 8 Eight 9 Nine 10 Ten 11 Ele
  • {app, BrowserWindow} 在 JavaScript (node.js) 中意味着什么?

    在阅读制作软件的文档时electron https electron atom io 我在一开始就遇到过这种类型的代码index jsfile 通常执行开始的文件 const app BrowserWindow require electr
  • 监听另一个应用程序中的事件

    假设我有两个用 C 编写的应用程序 第一个是引发名为 OnEmailSent 的事件的第三方应用程序 第二个是我编写的自定义应用程序 我想以某种方式订阅 OnEmailSent 即使是第一个应用程序 有什么方法可以将第二个应用程序附加到第一
  • 使用JQUERY滑动切换页面

    我在 stackoverflow 上搜索以查找在我的应用程序之间滑动的代码 并找到了下面的 jquery 代码 从答案中我读到它工作正常 但是当我将它放在我的页面上时 它无法工作 JavaScript div ui page live sw
  • 如何在golang中实现带附件的aws ses SendRawEmail

    我需要在 golang 中实现带附件的 Amazon ses SendRawEmail 我尝试使用以下代码 session err session NewSession svc ses New session aws Config Regi
  • Android 本地测试与仪表测试

    我正在尝试检查我的 API 在单元测试中是否可用 以确保它响应 200 现在 我的问题是我不太确定何时使用本地测试当我必须使用时Android 仪器测试 我知道我必须使用 Instrumented Tests 进行 UI 测试 但如何测试端