模块化应用程序堆栈中的虚拟数据和单元测试策略

2024-07-01

如何管理用于测试的虚拟数据?将它们保留在各自的实体中?在一个单独的测试项目中?使用外部资源的序列化程序加载它们?或者只是在需要的地方重新创建它们?

我们有一个应用程序堆栈,其中包含多个模块,这些模块依赖于另一个模块,每个模块都包含实体。每个模块都有自己的测试,并且需要虚拟数据来运行。

现在,具有大量依赖项的模块将需要来自其他模块的大量虚拟数据。然而,这些不会发布它们的虚拟对象,因为它们是测试资源的一部分,因此所有模块都必须一次又一次地设置它们需要的所有虚拟对象。

另外:我们实体中的大多数字段都不可为空,因此即使针对对象层运行事务也需要它们包含一些值,大多数时候还有进一步的限制,例如唯一性、长度等。

是否有最佳实践方法可以解决这个问题,还是所有解决方案都妥协?


更多详情

我们的堆栈看起来像这样:

一个模块:

src/main/java --> gets jared (.../entities/*.java contains the entities)
src/main/resources --> gets jared
src/test/java --> contains dummy object setup, will NOT get jared
src/test/resources --> not jared

我们使用 Maven 来处理依赖关系。

模块示例:

  • Module A有一些虚拟对象
  • Module B需要自己的对象并且与模块 A 相同

选项一)


这可能适用,也可能不适用 - 我很想看看您的虚拟对象和相关设置代码的示例。 (为了更好地了解它是否适​​用于您的情况。)但是我过去所做的甚至根本没有将这种代码引入测试中。正如您所描述的,它很难生产、调试,尤其是打包和维护。

我通常做的事情(据我所知,在 Java 中,这就是最佳实践)尝试使用测试数据生成器模式,如所述纳特·普莱斯 https://stackoverflow.com/users/99389/nat in his 测试数据构建器 http://www.natpryce.com/articles/000714.html post.

如果您认为这有些相关,请查看以下内容:

  • Java 是否存在像 Factory Girl 这样的框架? https://stackoverflow.com/questions/986509/does-a-framework-like-factory-girl-exist-for-java
  • 使事情变得简单 http://code.google.com/p/make-it-easy/,Nat 的框架实现了这种模式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

模块化应用程序堆栈中的虚拟数据和单元测试策略 的相关文章

  • 查找 Maven 使用的 Java 选项

    如何找到 Maven 正在使用哪些 Java 选项 Xmx Xms Xss 等 我发现有一种方法set它们是通过环境 MAVEN OPTS 实现的 现在我想要一种方法来确保它获得正确的设置 编辑 我相信它有所不同这个问题 https sta
  • 按下 JButton 时运行函数

    我正在尝试用java编写一个程序 使用机器人每隔几秒按一次特定的键 它有一个带有开始和停止按钮的 GUI 以及一个告诉其处于哪个状态的标签 到目前为止 我已经完成了所有工作 除了当我单击 开始 时 它运行我的机器人功能的循环 这是无限的 没
  • 将 float 转换为 Short,精度损失最小[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我有一个生成浮点值 例如 0 37885 的正弦波 但我希望它们作为短裤 直接使用 Short 进行转换 得到的值为 0 那么解决方案是什么
  • 创建用于软件分发的多平台 CD

    这与编程无关 但我希望仍然相关 我正在开发一个用 Java 编写的项目 旨在用于 PC 和 Mac 它将以 CD 形式发行 最终可能还会以 DVD 形式发行 我们的目标受众显然是非技术性的 因此 CD 在加载时 正常工作 非常重要 这本身并
  • Spring Boot数据休息中的日期问题

    当我处理日期时 我遇到了春季数据休息的问题 简而言之 就是推迟一天的日期 例如 如果我有 1111 11 11 它会返回给我 1111 11 10 SO 中有一些相关的帖子 ex1 https stackoverflow com quest
  • 从批处理文件运行 .jar

    我已经创建了一个可执行文件 jar文件 我怎样才能执行 jar使用批处理文件而不提及类路径 在 Windows 上 您可以使用以下命令 start javaw jar JarFile jar 通过这样做 命令提示符窗口不会保持打开状态
  • Mac 上缺少 spring-boot-starter-web hibernate-validator 依赖项

    我在STS Spring工具套件 上创建了Spring Boot项目 Spring Starter Project Window和Mac都有 这是我的pom xml
  • 从 android 将用户注册到 QuickBlox 用户

    我正在尝试在我的 Android 应用程序中使用 QuickBlox 我阅读了指南并导入了示例 一切正常 我更改了一些用户可以使用 EditText 作为用户名和另一个密码登录的内容 并且效果很好 但现在我想添加一个注册按钮 使用户能够注册
  • 使用 Flink 监控数据流目录中的新文件

    我目前正在编写我的第一个 Flink 应用程序 并且想要监视文件夹中的新文件 不幸的是我找不到关于这个主题的很多例子 我找到了readFile fileInputFormat path watchType interval pathFilt
  • 基于区域设置的 SimpleDateFormat 模式,但强制使用 4 位数年份

    我需要建立一个像这样的日期格式dd MM yyyy 几乎就像DateFormat SHORT 但包含 4 个年份数字 我尝试用它来实现它 new SimpleDateFormat dd MM yyyy locale format date
  • 从 Runnable 类内部访问共享变量

    我需要在主类的 main 方法中定义一个共享变量 我需要两个线程才能访问该共享变量 我通过实现 Runnable 接口并实现该接口的抽象 run 方法来创建线程 如何从实现 Runnable 接口的类中定义的 run 方法中引用 Main
  • 如何使用 Spring 使用注释执行基于构造函数的依赖注入?

    好的 如果我需要在构造函数中放入一些原始值 我该怎么做 Autowired public CustomBean String name Qualifier SuperBean SuperBean superBean super this s
  • 保存新图像时,它会保留旧画布

    我有一个画布 允许用户绘制和保存 它还允许用户更改颜色并在同一画布上使用不同的颜色进行绘制 我的绘画课 package com test testing import android content Context import andro
  • Spring Boot Rest - 如何配置 404 - 找不到资源

    我得到了一个有效的春季靴休息服务 当路径错误时 它不会返回任何内容 完全没有反应 同时它也不会抛出错误 理想情况下 我预计会出现 404 未找到错误 我有一个 GlobalErrorHandler ControllerAdvice publ
  • 数组的浅拷贝,为什么不能简单地做newArr = oldArr?

    假设我有一个整数数组 orig 我想浅复制它 所以我不能这样做 int shallow orig 我的教授说 对于原语 浅复制和深复制本质上是相同的 因为我们必须复制数组的每个索引 但是将整个数组设置为等于另一个数组会起到同样的作用 对吧
  • 如何修复 NoClassDefFoundError: CircularOutputStream 错误?

    我只是为 Selenium WebDriver 又名 Selenium 2 自动化测试创建一个简单的 Maven 项目 以进行无头测试 我在 pom xml 中添加了 PhantomJS 驱动程序依赖项和其他依赖项 如下所示
  • Java 泛型 - Java 是否需要支持本地定义的类型?

    我希望能在这里联系到 Java 泛型专家 假设您有一些类型化的课程 public interface SomeClass
  • Java将浮点字符串解析为浮点数组?

    有没有一种简单的方法将浮点字符串解析为浮点数组 我正在编写一个导入程序 它需要解析一个 ascii 文件以获取一些值 我只是想知道是否有更简单的方法来执行此操作 然后自己搜索所有空白并使用Float parseFloat s 对于每个空格分
  • Spring Security 登录页面

    我开发了一个使用 Spring Security 的默认登录页面的应用程序 不过我想实现我自己的登录页面 我将放置一个login html 而不是jsp 页面 我想使用 JQuery 来实现它 我检查了很多例子但无法实现 我是 Spring
  • 计算时间复杂度和 Big-O 表示法 [重复]

    这个问题在这里已经有答案了 我的以下代码的 Big O 表示法的时间复杂度是多少 计算它的步骤是什么 import java io File import java io FileNotFoundException import java

随机推荐

  • IE7 中的多个选项卡和一个工具栏实例

    我用 C 开发了一个用于 Internet Explorer 的工具栏 用于从外部应用程序发送和接收 URL 它在 IE6 中运行得很好 但我想在新版本 IE7 中利用选项卡式浏览 但我在那里遇到了障碍 似乎在 IE7 中 每个选项卡都有一
  • 如何声明一个对所有模块的 build.gradle 文件可见的常量?

    我有一个具有多个模块的项目 库和应用程序 每次Android新版本出现时 我都需要升级所有模块的targetSdk compileSdk buildToolsVersion等 常数可以帮助完成这项乏味的工作 如何定义对所有模块的 build
  • 在决定我是否需要请求增加允许的安装数量时,Delphi 激活会考虑哪些因素 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在VMWare下的Windows7虚拟机中安装了XE4 我的问题是 Delphi 保护系统在决定我是否已使用 另一个 允许的安装之一时会
  • Office 加载项 Outlook API 使用 displayNewMessageForm 方法附加文档问题

    我正在开发 Outlook 的 Office 插件 需要打开带有预定义附件的新邮件 尝试从当前项目 消息 获取附件 如下所示 Office context mailbox item attachments 这是一个输出 我得到附件类型 id
  • 如何将复杂属性从父作用域继承到指令的隔离作用域中

    在查看了 AngularJS 和相关 文档以及有关指令中隔离范围的其他 stackoverflow 问题后 我仍然有点困惑 为什么我不能在父作用域和指令隔离作用域之间进行双向绑定 其中父作用域属性是对象而不是属性 我应该只使用所需的属性吗s
  • 对于 Android 开发,我可以在图像视图上使用 JPG 图像而不是 PNG 图像吗?

    这个问题的主要目的是了解考虑以下场景 在 Android 开发中选择 PNG 和 JPG 的最佳选择是什么 1 使用jpg图像作为背景是一个好的选择吗 2 与 png 相比 jpg 图像的加载时间会更长吗 3 与 png 相比 jpg 会花
  • 当用户使用 Internet Explorer 时重定向到新页面

    我使用下面的代码将使用 Internet Explorer 的用户重定向到新页面 但显然代码有问题 因为当我使用 Internet Explorer 时该网站不再加载 这是代码 由于我不知道我做错了什么 如果有人可以发布使用正确编码的正确方
  • 为什么我收到 TypeError: array[i] is undefined? [复制]

    这个问题在这里已经有答案了 因此 在我的程序中 我有一个包含值的字典 散列的数组 当我循环遍历该数组时 我得到了我需要的值 但 for 循环之后的任何代码都不会执行 因为控制台输出 TypeError array i is undefine
  • 使用 Python 映射字母数字字符串

    我有一个姓名数据集 根据名称的字母数字字符串 我需要将它们映射到子名称 如下所示 Name Subname 9 AIF 09 9A09 980 PD Z09A 980P09 15 KIC 12 15K12 PIA 110H P 110 IC
  • 跨三个表的 LEFT JOIN(带有连接表)

    在Postgres中 有没有办法执行left join在由联结表链接的表之间 并在链接表上进行一些过滤 比如说 我有两张桌子 humans and pets 我想执行一个查询 其中包含人类 ID 和宠物名称 如果人类 ID 存在 但他们没有
  • Angular 5:表内的动态表单验证

    我正在尝试使用表单组验证表内的输入字段 但无法实现相同的目标 我使用 ngFor 来迭代数据 因为我必须在表的第一列中显示该数据 而其他列只是输入文本字段 我必须在其中添加表单验证 因此 我添加了该字段的唯一表单控件名称的索引 HTML代码
  • 有关堆栈大小的警告消息

    I use Visual Studio 2010 with Code Analysis活性 在我的代码中 有一行在函数中分配一些内存 TCHAR someString 40000 代码分析抛出警告信息 警告 C6262 函数使用 40000
  • Firebase 和 Google Play 服务之间要使用哪些依赖项?

    我最近开始使用 Firebase 但我无法完全理解它与 Google Play Services 的关系 我知道Firebase是一个移动平台 在Android上它是基于Google Play Services的 但是为什么有一些模块与Go
  • 如何在JNA中填充结构体数组?

    我正在尝试在 JNA 中使用以下 Windows API UINT WINAPI GetRawInputDeviceList Out opt PRAWINPUTDEVICELIST pRawInputDeviceList Inout PUI
  • Java 中的简单 Kerberos 客户端?

    Google Chrome 和 IE 等应用程序可以透明地处理 Kerberos 身份验证 但是我找不到一个 简单 的 Java 解决方案来匹配这种透明度 我发现的所有解决方案都需要存在 krb5 conf 文件和 login conf 文
  • 找不到 PHPUnit 的 TextUI/command.php

    我为我的 symfony2 项目安装了 phpunit 如下所示 如何使用从composer安装的phpunit https stackoverflow com questions 13764309 how to use phpunit i
  • 使用 PHP 解析 XML 导航站点地图

    我正在从 XML 文件实现 PHP 站点地图解析器 我做得相对不错 但是 我需要解析器更加动态 我需要实现一个递归函数 它将继续循环找到的每个 child node 一个节点可以在另一个 child node 中包含许多 child nod
  • 与 ADO.NET、SQLite 和 TSQL 的只读连接

    我的代码通过一个连接读取并通过另一个连接写入 我不想意外地使用读取连接进行写入 我怎样才能使连接只读 我正在使用 SQLite ATM 并将在原型结束时将代码部分转换为 tsql 您可以将 Read Only True 添加到只读连接 Da
  • WTL 子窗口事件处理

    我正在开发窗口应用程序 因为我在左侧和右侧有 2 个子窗口 我想分别处理两个窗口的输入事件 如何实现 My code class EditorWindow public DxWindow public CSplitterWindow m v
  • 模块化应用程序堆栈中的虚拟数据和单元测试策略

    如何管理用于测试的虚拟数据 将它们保留在各自的实体中 在一个单独的测试项目中 使用外部资源的序列化程序加载它们 或者只是在需要的地方重新创建它们 我们有一个应用程序堆栈 其中包含多个模块 这些模块依赖于另一个模块 每个模块都包含实体 每个模