JUnit 测试:通过模拟抑制枚举构造函数?

2024-03-16

我知道可以模拟单个枚举(使用如何使用 Mockito/Powermock 模拟枚举单例类? https://stackoverflow.com/questions/15939023/how-to-mock-an-enum-singleton-class-using-mockito-powermock),但我有大约 1000 个枚举值,它们可以调用 5 个不同的构造函数。枚举值在开发过程中经常发生变化。

我只想为我的 JUnit 测试模拟一两个。我不关心其余的,但它们仍然被实例化,这会调用一些讨厌的东西,从文件系统加载枚举的值。

是的,我知道这是非常糟糕的设计。但现在我还没有时间去改变它。

目前我们正在使用 Mockito/powermock。但是任何可以解决这个问题的框架我的意思是糟糕的设计都是受欢迎的。

假设我有一个与此类似的枚举:

public static enum MyEnum {
   A(OtherEnum.CONSTANT),
   B("1"),
   C("1", OtherEnum.CONSTANT),
   //...and so on for again 1000 enum values :(

   private double value;
   private String defaultValue;
   private OtherEnum value;

   /* Getter/Setter */
   /* constructors */
}

我同意 Nick-Holt 的建议,他建议添加一个接口:

 public interface myInterface{

     //add the getters/setters you want to test

 }

public enum MyEnum implements MyInterface{

    //no changes needed to the implementations
    //since they already implement the methods you want to use

}

现在您可以使用 Mockito 的正常模拟功能,而无需依赖 Powermock

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

JUnit 测试:通过模拟抑制枚举构造函数? 的相关文章

随机推荐

  • 在 HttpWebRequest 中添加自定义标头

    我需要添加一些自定义标头HttpWebRequest目的 如何添加自定义标头HttpWebRequestWindows Phone 7 中的对象 您使用Headers具有字符串索引的属性 request Headers X My Custo
  • 如何使用 Backbone 处理单页应用程序的 UI 状态

    请耐心等待 因为我来自传统的 Web 开发背景 使用 ASP Net 甚至服务器端 MVC 我正在尝试使用 Backbone js 构建一个高度交互的单页应用程序 以帮助组织我的 javascript 代码并构建 UI 我在构建 UI 组件
  • JAVA_HOME 未正确定义 编译时出错

    我正在 cocoa 中开发一个使用一些 java 类的应用程序 我收到错误 JAVA HOME 未正确定义我们无法执行 System Library Frameworks JavaVM framework Home bin java 我不知
  • Java,默认编码[重复]

    这个问题在这里已经有答案了 可能的重复 jvm默认编码是什么 https stackoverflow com questions 1006276 what is the default encoding of jvm Hello 当用于处理
  • 函数式反应式编程的“信号”表示是否正确?

    我一直在研究 FRP 并发现了许多不同的实现 我见过的一种模型我将其称为 信号 表示 这一本质将事件和行为结合成一个实体 首先 信号是一个对象 其值是一种行为 其次 信号具有一个事件 流 可以将其视为标准数据结构并对其进行操作 您可以在信号
  • 为什么控制器对路线更新没有响应?

    我想保留控制器的实例而不重新加载 我设置reloadOnSearch为 false 我在控制器中管理路由更改 这是代码 这是我的链接的示例 a href products page 2 next a 我定义了以下模块 angular mod
  • jquery mobile 一页具有不同的元视口设置

    我尝试过调整我的元数据viewportjQM 上的标签beforepageshow等等它根本不起作用 我想这是很明显的原因 我有一个页面上有一个 highcharts 图表 我的视口标签内没有任何内容 通常有width device wid
  • Python 中的元组声明

    在 python 中 可以用括号显式声明一个元组 如下所示 gt gt gt x 0 25 0 25 0 25 0 25 gt gt gt x 0 25 0 25 0 25 0 25 gt gt gt type x
  • 有没有办法对 Neo4j 数据进行分片和复制?

    我正在考虑为我正在从事的一些新项目选择 Neo4j 对于给定的数据需求 本质上基于图形 neo4j 非常适合 并且快速原型为我提供了良好的响应时间 我想了解的是如何扩展 neo4j 部署 具体来说 如何跨 neo4j 部署对数据进行分片 由
  • 我可以从 BitBucket 克隆 git 存储库吗?

    我正在尝试使用 BitBucket git 存储库 但我个人更喜欢使用 hg 这有效 git clone https email protected cdn cgi l email protection projectuser projec
  • Flask-SQLAlchemy – 您可以在模型中进行查询吗?

    我正在构建一个使用 Flask SQLAlchemy 的 Flask Web 应用程序 并且我还在考虑使用 Flask Login 来处理会话并保护某些视图 Flask Login 需要某些方法 我认为这些方法对应用程序的各个部分都很有用
  • MySQL标记问题:如何选择已标记为X、Y和Z的项目?

    我正在处理一个数据库 其中的项目被 标记 一定次数 item 100k 行 id name 其他的东西 tag 10k 行 id name item2tag 1 000 000 行 item id tag id count 我正在寻找最快的
  • C# 中集合的 XML 序列化

    我有两个课程如下 public class Info XmlAttribute public string language public int version public Book book public Info public In
  • Swagger-Web Api 文档(Swashbuckle 中缺少 Bootstrapper)

    我正在尝试使用 swagger 作为我的 Web api 文档 为此我已经从 nuget 包安装了 Swashbuckle 但我无法在 swaggerconfig cs 类中获取 Bootstrapper 包 那么是否有其他替代方法可以在
  • 如何在 Windows 7 的 git bash 终端中不使用鼠标选择文本?

    我使用的是 Windows 7 安装 Windows 版 Git 后可以使用 Git Bash I found mouse inconvenient to select copy paste in terminal window What
  • C++CLI。本机部分是用纯 C++ 编写的,但在 CLI 中编译的速度与纯本机 C++ 一样快吗?

    我想将音频计算委托给 C 层 但通过 WPF GUI 处理和编辑音频内容 我简要了解了 C CLI 我想知道 我应该使用 C CLI 作为 C GUI 和 C 音频管理之间的中间层吗 或者我应该简单地将代码放入 C CLI 中并期望它以相同
  • 如何在 if 语句中使用 UIActionSheet? [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我有一个if声明工作正常 但我需要添加第二个if其中的声明 我似乎不知道如何正确执行 这是我的代码 IBAction xButto
  • 在运行时指定多个谓词

    STL中有一些运算符类 如less equal to greater equal等 如何轻松地将它们组合起来与remove if函数一起使用 例如我想删除向量中大于 0 且小于 3 且不等于 2 的元素 那么它会是这样的 remove if
  • Java 6 的 WatchService [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Java 7 推出WatchService用于连续监控文件系统 Java 6 有向后移植吗 是否有具有
  • JUnit 测试:通过模拟抑制枚举构造函数?

    我知道可以模拟单个枚举 使用如何使用 Mockito Powermock 模拟枚举单例类 https stackoverflow com questions 15939023 how to mock an enum singleton cl