Scala或Java相当于Ruby factory_girl或Python factory_boy(用于单元测试的便捷工厂模式)

Min*_*ing 6 java unit-testing scala factory-boy factory-bot

当我在动态类型的Ruby或Python中编写单元测试时,我分别使用库factory_girlfactory_boy,以便方便地生成测试对象.它们提供了直接对象实例化的便捷功能,例如:

  • 工厂继承和覆盖
  • 字段默认值和覆盖
  • 懒惰计算的依赖/派生字段
  • 构建依赖/相关的其他对象
  • 隐式惰性字段依赖性解析

在静态类型的Java或Scala中编写单元测试时,我可以使用哪些库/框架来实现具有类似优点的类似效果?

提前致谢!

我在这里发现了一个类似的StackOverflow问题,但不幸的是,最好的答案是(释义),"没有直接的等价,因为那将毫无意义".

小智 9

有一个名为Fixture-Factory的项目(https://github.com/six2six/fixture-factory).它基于Factory-Girl的想法.

您可以轻松创建对象的模板定义:

Fixture.of(Client.class).addTemplate("valid", new Rule(){{
  add("id", random(Long.class, range(1L, 200L)));
  add("name", random("Anderson Parra", "Arthur Hirata"));
  add("nickname", random("nerd", "geek"));
  add("email", "${nickname}@gmail.com");
  add("birthday", instant("18 years ago"));
  add("address", one(Address.class, "valid"));
}});
Run Code Online (Sandbox Code Playgroud)

然后您可以在测试中轻松使用它:
Client client = Fixture.from(Client.class).gimme("valid");