对 Android 库应用程序进行单元测试的最简单方法?

2023-12-08

抱歉,如果这是一个有点模糊的问题,但是我很难找到一个solid有关如何使用 Android 进行单元测试(隔离测试)的示例...

这是我想要实现的目标的示例:

// Some class
class Calculator
{
    public int Add(int a, int b) { return a+b; }
}


// Simple test
import org.junit.Assert;
import org.junit.Test;

class CalculatorTests
{
    @Test
    public void should_add_numbers_correctly()
    {
        Calculator calculator = new Calculator();
        int expectedResult = 5 + 5;
        int actualResult = calculator.Add(5,5);
        Assert.assertEqual(actualResult, expectedResult);
    }   
}

因此,一个项目包含模型和逻辑,然后另一个项目包含所述库的测试。没有前端或 UI,所以我想做最少的事情,以便能够测试我的方法是否全部独立工作。


只要您的“库”不包含对 Android SDK 中资源的任何引用,那么除了常规单元测试之外就没有其他任何操作了。在您的 Eclipse 工作区中,假设您有主项目MyAndroidLibProject,您只需创建一个新的 Java 项目(例如MyAndroidLibProjectUnitTests)。在这里,您创建普通的单元测试,引用Calculator主项目中的类(只需确保将主项目添加到测试项目的构建路径中)。

您可能还会在以下位置找到一些附加信息:类似的问题我之前问过自己,也问过自己answer对于这个问题。

更新了示例:

import static org.junit.Assert.*;
import org.junit.Test;

public class SemesterTest
{
    @Test
    public void aNewSemesterShouldHaveANegativeId()
    {
        Semester semester = new Semester(2010, SemesterType.FALL);
        assertEquals(-1, semester.getInternalId());
    }

    @Test
    public void toStringShouldPrintSemesterTypeAndYear()
    {
        Semester semester = new Semester(2010, SemesterType.FALL);
        assertEquals(SemesterType.FALL + " 2010", semester.toString());
    }

    @Test
    public void equalityShouldOnlyDependOnSemesterTypeAndYear()
    {
        Semester aSemester = new Semester(2010, SemesterType.FALL);
        aSemester.setInternalId(1);

        Semester anotherSemester = new Semester(2010, SemesterType.FALL);
        anotherSemester.setInternalId(2);

        assertEquals(aSemester, anotherSemester);
    }
}

以上是我自己测试的Semester类(代表一个学期的简单数据类)。Semester位于我的 android 项目内MyMainProject(但该类本身不包含任何对 Android SDK 的引用)。SemesterTest位于我的测试项目内MyTestProject(一个普通的Java项目),两者都有MyMainProject and MyTestProject在同一个工作空间中(并且从那时起SemesterTest具有相同的包名Semester,我不需要任何特殊的导入声明来引用Semester任何一个)。MyTestProject也有MyMainProject添加到其构建路径(junit.jar也被添加到构建路径中,但这会自动发生,至少在 Eclipse 中我认为是这样)。

正如您所看到的,这只是一个完全普通的单元测试(JUnit 4,只是提到它)。希望这可以帮助。

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

对 Android 库应用程序进行单元测试的最简单方法? 的相关文章

  • Java ResultSet 如何检查是否有结果

    结果集 http java sun com j2se 1 4 2 docs api java sql ResultSet html没有 hasNext 方法 我想检查 resultSet 是否有任何值 这是正确的方法吗 if resultS
  • 如何访问JAR文件中的Maven资源? [复制]

    这个问题在这里已经有答案了 我有一个使用 Maven 构建的 Java 应用程序 我有一个资源文件夹com pkg resources 我需要从中访问文件 例如directory txt 我一直在查看各种教程和其他答案 但似乎没有一个对我有
  • 如何在谷歌地图android上显示多个标记

    我想在谷歌地图android上显示带有多个标记的位置 问题是当我运行我的应用程序时 它只显示一个位置 标记 这是我的代码 public class koordinatTask extends AsyncTask
  • 尝试将 Web 服务部署到 TomEE 时出现“找不到...的 appInfo”

    我有一个非常简单的项目 用于培训目的 它是一个 RESTful Web 服务 我使用 js css 和 html 创建了一个客户端 我正在尝试将该服务部署到 TomEE 这是我尝试部署时遇到的错误 我在这里做错了什么 刚刚遇到这个问题 我曾
  • 获取文件的总大小(以字节为单位)[重复]

    这个问题在这里已经有答案了 可能的重复 java 高效获取文件大小 https stackoverflow com questions 116574 java get file size efficiently 我有一个名为 filenam
  • Mipmap 与可绘制文件夹[重复]

    这个问题在这里已经有答案了 我正在使用 Android Studio 1 1 Preview 1 我注意到 当我创建一个新项目时 我得到以下层次结构 不同 DPI 的 Mipmap 文件夹 不再有不同 DPI 的可绘制文件夹 我应该将所有资
  • java for windows 中的文件图标叠加

    我正在尝试像 Tortoise SVN 或 Dropbox 一样在文件和文件夹上实现图标叠加 我在网上查了很多资料 但没有找到Java的解决方案 Can anyone help me with this 很抱歉确认您的担忧 但这无法在 Ja
  • Android 中如何通过彩信发送图片?

    我正在开发多媒体应用程序 我正在通过相机捕获一张图像 并希望将该图像和文本发送到其他号码 但我不知道如何通过彩信发送图像 MMS 只是一个 http post 请求 您应该使用执行请求额外的网络功能 final ConnectivityMa
  • 关键字“table”附近的语法不正确,无法提取结果集

    我使用 SQL Server 创建了一个项目 其中包含以下文件 UserDAO java public class UserDAO private static SessionFactory sessionFactory static se
  • 如何使用 jUnit 将测试用例添加到套件中?

    我有 2 个测试类 都扩展了TestCase 每个类都包含一堆针对我的程序运行的单独测试 如何将这两个类 以及它们拥有的所有测试 作为同一套件的一部分执行 我正在使用 jUnit 4 8 在 jUnit4 中你有这样的东西 RunWith
  • Cucumber 0.4.3 (cuke4duke) 与 java + maven gem 问题

    我最近开始为 Cucumber 安装一个示例项目 并尝试使用 maven java 运行它 我遵循了这个指南 http www goodercode com wp using cucumber tests with maven and ja
  • OnLongClickListener 不工作

    我有一个ImageView 我需要使用onLongClickListener对于图像视图 当我使用这段代码时 什么也没有发生 Code gallery Gallery findViewById R id gall1 gallery setA
  • 我可以使用 moq Mock 来模拟类而不是接口吗?

    正在经历https github com Moq moq4 wiki Quickstart https github com Moq moq4 wiki Quickstart 我看到它 Mock 一个接口 我的遗留代码中有一个没有接口的类
  • 在命令行上卸载 Android SDK 的选定部分

    这与 卸载旧的 Android SDK 版本 https stackoverflow com questions 15182377 uninstall old android sdk versions 除非我想在无头 Linux CI 服务
  • 问题:为什么React Native Video不能全屏播放视频?

    我正在react native 0 57 7 中为android和ios创建一个应用程序并使用反应本机视频 https github com react native community react native video播放上传到的视频
  • 如何将双精度/浮点四舍五入为二进制精度?

    我正在编写对浮点数执行计算的代码的测试 不出所料 结果很少是准确的 我想在计算结果和预期结果之间设置一个容差 我已经证实 在实践中 使用双精度 在对最后两位有效小数进行四舍五入后 结果始终是正确的 但是usually四舍五入最后一位小数后
  • CamcorderProfile.videoCodec 返回错误值

    根据docs https developer android com reference android media CamcorderProfile html 您可以使用CamcorderProfile获取设备默认视频编解码格式 然后将其
  • 如何防止在Spring Boot单元测试中执行import.sql

    我的类路径中有一个 import sql 文件 其中包含一些 INSERT 语句 当使用 profile devel 运行我的应用程序时 它的数据被加载到 postgres 数据库中 到目前为止一切正常 当使用测试配置文件执行测试时 imp
  • 发布的 Android apk 出现错误“包文件未正确签名”

    我最近将我的应用程序上传到 Android 市场 但是由于错误 下载时它拒绝运行 包文件未正确签名 我首先使用 eclipse 发布了数据包 右键单击导出 创建密钥库然后发布 但它拒绝工作 然后我下载了 keytool 和 jarsigne
  • Java中super关键字的范围和使用

    为什么无法使用 super 关键字访问父类变量 使用以下代码 输出为 feline cougar c c class Feline public String type f public Feline System out print fe

随机推荐

  • gdb python:遍历结构数组

    我们不能遍历结构体数组吗 我的意思是对于每个索引 通过检查结构的内容并相应地打印每个字段 正如我们可以对这样的结构做的事情 s gdb parse and eval expr for k in s type keys v s k if is
  • 提取二进制矩阵中值为 1 的列名称

    我有个问题 我想从结构如下的二进制矩阵开始创建一个新矩阵 A B C D E F G 0 0 1 1 0 0 H 0 0 0 1 1 0 I 0 0 0 0 1 0 L 1 1 0 0 0 0 我想创建一个新矩阵由起始行的行名称和一个名为
  • WP7 - 根据设置动态更改启动页面

    是否可以根据 Windows Phone 7 应用程序中的设置更改启动页面 例如 一个有 2 个页面的应用程序 比如说电影和新闻 我希望用户能够在启动应用程序时选择他们想要首先显示的两个页面中的哪一个 现在 我试图通过在启动时导航到正确的页
  • 显示表行如何表现得像 colspan=3

    我需要两行 第一行有 3 列 第二行我需要跨越所有宽度 就像td colspan 3会做 或者显示 table cell 行为类似于 colspan 3 我在用display table row width 100 如何做呢 这是我的CSS
  • 无法将自定义标头从 WebAPI 公开给客户端

    我编写了一个程序来下载 web api 返回的 pdf word 或 txt 文件 并且工作正常 在服务器端我使用了 WebApi 和客户端 AngularJs 现在的问题是 我还需要来自 api 的文件名 为此我需要读取 api 返回的标
  • JSON 和 JSONP 有什么区别?

    格式明智 文件类型明智和实际用途明智 JSONP 是带填充的 JSON 也就是说 您在开头放置一个字符串 并在其周围放置一对括号 例如 JSON name stackoverflow id 5 JSONP func name stackov
  • AWS RDS 的 Mysqldump

    我想备份 RDS MYsql 数据库 我目前正在运行一个小实例 我需要程序来获取 sqldump 但我的问题是 RDS 在获取 sqldump 时是否会冻结 因为在其生产过程中会发生大量读 写操作 请帮忙 要回答确切的问题 获取 sqldu
  • 如何通过浏览器检测某个协议是否受支持?

    类似于 iTunes 的 链接制作器 http www apple com itunes linkmaker faq 通过网络浏览器 iTunes 网页能够查明是否itms 已在客户端工作站上注册 因此显示正确的消息 在 iTunes 中查
  • Worker 服务意外停止工作

    我有 NET Core 3 辅助服务 每 10 秒检查 一些内容 有一次 它 随机 停止这样做 我不确定为什么 到目前为止 它发生了两次 并且没有异常日志或类似的东西 所以我只能假设我应该添加一个try catch在 ExecuteAsyn
  • Android 2.3 设备上的 Android MediaPlayer 错误 (1, -38)

    最近被分配一个任务 开发一个 Android 应用程序 通过 WiFI 播放 RTSP 流 该应用程序在 SurfaceView 上使用 Android MediaPlayer 类 相同的代码适用于 Android 4 2 4 3 和 4
  • 为什么 FileWriter 不创建新文件?

    考虑以下代码 m Writer new PrintWriter new FileWriter LoginHistory dat m Writer println Integer toString s NumOfLogins m Writer
  • 如何在 ASP.NET 中从 JavaScript 触发按钮单击事件

    如何从 JavaScript 触发服务器端按钮单击事件 我尝试这样 document getElementById click 但没有用 我该怎么做 您可以将此行放在 JavaScript 函数中 doPostBack btnSubmit
  • DispatcherTimer - 如果上一个刻度仍在运行,则防止触发刻度事件

    在 Silverlight 应用程序中 我有一个代码块必须每 500 毫秒运行一次 我计划使用 DispatcherTimer 来实现此目的 请参阅下面的代码 DispatcherTimer dt new DispatcherTimer d
  • Visual Studio 更新是否会破坏 iText7?

    我在使用 iText7 7 1 6 和 Visual Studio 2019 时遇到问题 我的程序已经运行一年了 但刚刚将 Visual Studio 社区 从 16 6 1 更新到版本 16 6 2 我进行了重建 但没有更改任何内容 现在
  • Plupload HTML4 添加文件对话框在 IE 中未触发

    我正在使用 Plupload jQuery 版本 和 HTML4 for IE 由于某种原因 当我按下 添加文件 按钮时 它没有打开文件对话框 Plupload 容器被放置在一个对话框中 我调用 pluploadQueue 每次在我显示对话
  • 如何在 iOS 中计算 SHA-2(最好是 SHA 256 或 SHA 512)哈希值?

    安全服务 API 似乎不允许我直接计算哈希值 有很多公共领域和自由许可的版本可用 但如果可能的话 我宁愿使用系统库实现 数据可以通过 NSData 或普通指针访问 哈希的加密强度对我来说很重要 SHA 256 是可接受的最小哈希大小 这就是
  • 用于打印括号内整数的正则表达式

    第一次使用正则表达式 尽管 stackoverflow 中已经有很多例子 但无法让它工作 如何提取括号内字符串中的整数 Example dijdi d43 d5 55 43 32 dm dij 99 x 会回来 43 32 99 and 如
  • WPF:允许用户调整 RichTextBox 中图像的大小

    WPF 中的 RichTextBox 控件中是否有一种方法允许用户调整插入图像的大小 或者您是否必须为此设计自己的方法 我想要实现的目标如下所示 是写字板执行我想要的操作的屏幕截图 Notes 以纯文本形式读取 RTF 文件 我发现与图像大
  • Python:父子层次结构的组合

    对于子父关系表 csv 我尝试使用表中的所有数据收集可能的父子关系组合链 我正在尝试解决一个问题 如果存在多个子父级 参见第 3 行和第 4 行 则第二个子父级组合 第 4 行 不包含在迭代中 数据示例 孩子 父母 A B A C B D
  • 对 Android 库应用程序进行单元测试的最简单方法?

    抱歉 如果这是一个有点模糊的问题 但是我很难找到一个solid有关如何使用 Android 进行单元测试 隔离测试 的示例 这是我想要实现的目标的示例 Some class class Calculator public int Add i