当前位置: 首页 > 面试题库 >

Java是否存在像Factory Girl这样的框架?

羊舌自强
2023-03-14
问题内容

Factory Girl是Rails中的一个方便框架,可轻松创建模型实例进行测试。

在Factory Girl主页上:

factory_girl允许您快速定义每个模型的原型,并请求具有对于手头测试很重要的属性的实例。

一个示例(也来自主页):

Factory.sequence :email do |n|
    "somebody#{n}@example.com"
end

# Let's define a factory for the User model. The class name is guessed from the
# factory name.
Factory.define :user do |f|
    # These properties are set statically, and are evaluated when the factory is
    # defined.
    f.first_name 'John'
    f.last_name  'Doe'
    f.admin      false
    # This property is set "lazily." The block will be called whenever an
    # instance is generated, and the return value of the block is used as the
    # value for the attribute.
    f.email      { Factory.next(:email) }
end

如果我需要用户,可以致电

test_user = Factory(:user, :admin => true)

这将使用户拥有工厂原型中指定的所有属性, 我明确指定的admin属性 除外 。还要注意,电子邮件工厂方法每次调用都会产生不同的电子邮件。

我认为为Java实现类似的东西应该很容易,但是我不想重新发明轮子。

PS:我对JMock和EasyMoc都了解,但是这里我不是在谈论模拟框架。


问题答案:

一个可能的库是Usurper。

但是,如果要指定要创建的对象的属性,则Java的静态类型使框架毫无意义。您必须将属性名称指定为字符串,以便框架可以使用反射或Java
Bean内省来查找属性访问器。这将使重构更加困难。

仅更新对象并调用其方法要简单得多。如果要避免在测试中使用大量样板代码,则“
测试数据构建器”模式可以提供帮助。



 类似资料:
  • 问题内容: PHP是否有像Java这样的虚拟机? 问题答案: 是。 与运行PHP的平台无关,这些脚本被编译为相同的字节码,并由Zend Engine运行。 与Java的区别在于,该编译后的代码通常不存储在单独的文件中,并且每次执行时都会重新编译脚本(但是,请参见操作码缓存)。

  • 在与甲骨文合作几年后,我刚搬到PostgreSQL。我一直在研究PostgreSQL数据库应用程序(Java、JDBC)中准备语句的一些性能问题。 Oracle在其SGA中缓存准备好的语句-准备好的语句池在数据库连接之间共享。 PostgreSQL文档似乎没有指出这一点。以下是文档中的片段(https://www.postgresql.org/docs/current/static/sql-pre

  • 问题内容: 在PHP中,使用可以很容易地传回json对象。 但是,是否有与之等效的XML? 问题答案: JSON可以原生地表达php数组,整数,字符串等。XML没有这样的概念,只有元素,属性和文本。如果要逐字转移对象,请使用JSON。如果要实现复杂的API,请使用XML,例如php DOM接口。

  • 问题内容: 我发现我喜欢使用C#的东西是属性和String.Format。 Java中是否存在类似C#的String.Format之类的东西? C#前: 问题答案: 它甚至被称为String.format(): 从Java 1.5开始,此方法可用。

  • 问题内容: 在C#中,我们有2种模式来构建项目:和,我想知道Java是否具有相同的东西。我将IntelliJ IDEA用作Java IDE,到目前为止,我还没有在任何地方像VS IDE中那样配置构建模式。 问题答案: javac -g Generate all debugging info -g:none Generate no debugging info -g:{lines,vars,sour

  • 问题内容: PHP中数组符号的简写是什么? 我尝试使用(无效): 如果您提供有关PHP其他速记的一些信息的链接,那将是完美的。 问题答案: 更新: 从PHP 5.4.0 开始,引入了用于声明数组的简化语法: 上一个答案: 没有。只有但是您可以开始添加元素。 就PHP而言,这完全可以。对于不确定的变量,你甚至不会得到E_NOTICE。 如果使用未初始化的变量,则会发出E_NOTICE级错误,但是如果